Jackson @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType (2024)

Written by: Arvind Rai,
Last updated:
March 16, 2018

Jackson @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType (1)Jackson @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType (2) Jackson @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType (3)

Jackson API

This page will walk through Jackson @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType annotations example. These annotations are used to ignore logical properties in JSON serialization and deserialization. @JsonIgnore is annotated at a class property level to ignore it. @JsonIgnoreProperties is annotated at class level and we need to specify the logical properties of that class to ignore them. @JsonIgnoreType is annotated at class level and it ignores the complete class. @JsonIgnore and @JsonIgnoreType has an element value which accepts Boolean values to make it active and inactive. @JsonIgnoreProperties has elements that are allowGetters, allowSetters, ignoreUnknown and value. The element value in @JsonIgnoreProperties specifies the names of properties to ignore. On this page we will provide complete example to use @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType in JSON serialization and deserialization step by step.

Contents
  • 1. Technologies Used
  • 2. @JsonIgnore
  • 3. @JsonIgnoreProperties
    • 3.1. @JsonIgnoreProperties allowGetters
    • 3.2. @JsonIgnoreProperties allowSetters
    • 3.3. @JsonIgnoreProperties ignoreUnknown
  • 4. @JsonIgnoreType
  • 5. Complete Example
  • 6. References
  • 7. Download Source Code

1. Technologies Used

Find the technologies being used in our example.
1. Java 9
2. Jackson 2.9.4
3. Gradle 4.3.1
4. Eclipse Oxygen

2. @JsonIgnore

@JsonIgnore is used to ignore the logical property used in serialization and deserialization. @JsonIgnore can be used at setter, getter or field. It is used as following.
Using field:

@JsonIgnoreprivate String category; 

Using getter method:

@JsonIgnorepublic String getCategory() { return category;}

Using setter method:

@JsonIgnorepublic void setCategory(String category) { this.category = category;} 

In all the above cases the logical property is category. In deserialization, application will throw exception as Unrecognized field "category". In serialization there will be no category field in JSON output. @JsonIgnore can be used with @JsonProperty as given below.

@JsonIgnore@JsonProperty("bookCategory")private String category; 

In the above code snippet, logical property is bookCategory. As we are using @JsonIgnore, so during JSON serialization and deserialization the logical property bookCategory will not be available.

@JsonIgnore has element value which is optional. Using Boolean we can make it active and inactive. We can use it as following.

@JsonIgnore(false)private String category; 

In the above code we have made @JsonIgnore inactive by passing false value. Now the logical property category will be available in JSON serialization and deserialization.

3. @JsonIgnoreProperties

@JsonIgnoreProperties ignores the specified logical properties in JSON serialization and deserialization. It is annotated at class level. Find the code snippet.

@JsonIgnoreProperties({ "bookName", "bookCategory" })public class Book { @JsonProperty("bookId") private String id; @JsonProperty("bookName") private String name; @JsonProperty("bookCategory") private String category; ------} 

The logical properties bookName and bookCategory has been specified in @JsonIgnoreProperties annotation. So these logical properties will not take part in JSON serialization and deserialization. If other logical properties such as bookId has been annotated with @JsonIgnore then all these logical properties will be ignored in JSON serialization and deserialization. It means the union of logical properties ignored by @JsonIgnore and @JsonIgnoreProperties are considered to be ignored in JSON serialization and deserialization.

@JsonIgnoreProperties has elements that are allowGetters, allowSetters, ignoreUnknown and value. The element value specifies name of properties to ignore.

3.1. @JsonIgnoreProperties allowGetters

When we pass true to allowGetters element, the getters will be allowed for the specified logical properties. It means the specified logical properties in @JsonIgnoreProperties will take part in JSON serialization but not in deserialization.

@JsonIgnoreProperties(value={ "bookName", "bookCategory" }, allowGetters= true)public class Book {------} 

In the above code, the logical properties bookName and bookCategory will take part in JSON serialization but not in deserialization.

3.2. @JsonIgnoreProperties allowSetters

When we pass true to allowSetters element, the setters will be allowed for the specified logical properties. It means the specified logical properties in @JsonIgnoreProperties will take part in JSON deserialization but not in serialization.

@JsonIgnoreProperties(value={ "bookName", "bookCategory" }, allowSetters= true)public class Book {------} 

In the above code, the logical properties bookName and bookCategory will take part in JSON deserialization but not in serialization.

3.3. @JsonIgnoreProperties ignoreUnknown

When we pass true to ignoreUnknown element, then in deserialization if JSON data has a field for which there is no logical property then that JSON field will be ignored and no error will be thrown. It can be used as following.

@JsonIgnoreProperties(ignoreUnknown = true)public class Book {@JsonProperty("bookId")private String id;@JsonProperty("bookName")private String name;@JsonProperty("bookCategory")private String category; } 

In the above class we have bookId, bookName and bookCategory logical properties. Suppose we have a JSON data with some unknown fields.

{ "bookId" : "A101", "bookName" : "Learning Java", "bookCategory" : "Java", "pubYear" : "2018", "price" : "200",} 

In the above JSON fields, pubYear and price has no corresponding logical properties in Book class. In deserialization, we will not get exception because we are using ignoreUnknown = true in @JsonIgnoreProperties annotation.

4. @JsonIgnoreType

@JsonIgnoreType can be annotated at class level. It ignores all logical properties of annotated class in JSON serialization and deserialization. It is used as following.

@JsonIgnoreTypepublic class Address { @JsonProperty("city") private String city; @JsonProperty("country") private String country; ------} 

Now suppose Address is being used in Writer class.

public class Writer { ------ @JsonProperty("writerAddress") private Address address;} 

The logical property writerAddress will be ignored in serialization and deserialization of Writer class.

@JsonIgnoreType has element value which is optional. Using Boolean we can make it active and inactive. We can use it as following.

@JsonIgnoreType(false)public class Address {------} 

In the above code we have made @JsonIgnoreType inactive by passing false value. Now the Address class will be available in JSON serialization and deserialization.

5. Complete Example

build.gradle

apply plugin: 'java'apply plugin: 'eclipse'archivesBaseName = 'concretepage'version = '1' repositories { mavenCentral()}dependencies { compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.4'} 

Address.java

package com.concretepage;import com.fasterxml.jackson.annotation.JsonIgnoreType;import com.fasterxml.jackson.annotation.JsonProperty;@JsonIgnoreTypepublic class Address { @JsonProperty("city") private String city; @JsonProperty("country") private String country; public Address() {} public Address(String city, String country) {this.city = city;this.country = country; } public String getCity() {return city; } public void setCity(String city) {this.city = city; } public String getCountry() {return country; } public void setCountry(String country) {this.country = country; }} 

Book.java

package com.concretepage;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;import com.fasterxml.jackson.annotation.JsonProperty;@JsonIgnoreProperties({"bookName", "bookCategory"})public class Book {@JsonProperty("bookId")private String id;@JsonProperty("bookName")private String name;@JsonProperty("bookCategory")private String category; public Book(){} public Book(String id, String name, String category) { this.id = id; this.name = name; this.category = category; }public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}} 

Writer.java

package com.concretepage;import com.fasterxml.jackson.annotation.JsonIgnore;import com.fasterxml.jackson.annotation.JsonProperty;public class Writer {@JsonProperty("writerId")private Integer id; @JsonIgnore@JsonProperty("writerName")private String name;@JsonProperty("writerBook")private Book book;@JsonProperty("writerAddress")private Address address; public Writer(){} public Writer(Integer id, String name, Book book, Address address){ this.id = id; this.name = name; this.book = book; this.address = address; }public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}} 

Run the code for serialization.
ObjectToJSON.java

package com.concretepage;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;public class ObjectToJSON { public static void main(String[] args) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); Book book = new Book("A101", "Learning Java", "Java"); Address address = new Address("Noida", "India"); Writer writer = new Writer(110, "Mohit", book, address); String jsonWriter = mapper.writerWithDefaultPrettyPrinter() .writeValueAsString(writer); System.out.println(jsonWriter); }} 

Output

{ "name" : "Mohit", "writerId" : 110, "writerBook" : { "bookId" : "A101" }} 

If we use neither @JsonIgnore nor @JsonIgnoreProperties nor @JsonIgnoreType in the above example then the output will be as given below.

{ "writerId" : 110, "writerName" : "Mohit", "writerBook" : { "bookId" : "A101", "bookName" : "Learning Java", "bookCategory" : "Java" }, "writerAddress" : { "city" : "Noida", "country" : "India" }} 

Now run the code for deserialization.
JSONToObject.java

package com.concretepage;import java.io.IOException;import com.fasterxml.jackson.core.JsonParseException;import com.fasterxml.jackson.databind.JsonMappingException;import com.fasterxml.jackson.databind.ObjectMapper;public class JSONToObject {public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { String jsonData = "{" +"\"writerId\" : 111," // +"\"writerName\" : \"Mahesh\"," +"\"writerBook\" : {" +"\"bookId\" : \"A101\"" // +"\"bookName\" : \"Learning Spring\"," // +"\"bookCategory\" : \"Spring\"" +"}" // +"\"writerAddress\" : {" // +"\"city\" : \"Noida\"," // +"\"country\" : \"India\"" // +"}" +"}"; ObjectMapper mapper = new ObjectMapper(); Writer writer = mapper.readValue(jsonData, Writer.class); System.out.println(writer.getId()); //System.out.println(writer.getName()); Book book = writer.getBook(); System.out.println(book.getId()); //System.out.println(book.getName()+", "+ book.getCategory()); //System.out.println(book.getName()+", "+ book.getCategory()); // Address address = writer.getAddress(); // System.out.println(address.getCity()+", "+ address.getCountry());}} 

Output

111A101 

6. References

Annotation Type JsonIgnore
Annotation Type JsonIgnoreProperties
Annotation Type JsonIgnoreType

7. Download Source Code

jackson-jsonignore-jsonignoreproperties-and-jsonignoretype.zip

Jackson @JsonIgnore, @JsonIgnoreProperties and @JsonIgnoreType (2024)
Top Articles
Hoe de vijf zintuigen werken
Human sensory reception | Definition, Organs, Systems, Examples, & Facts
myrtle beach motorcycles/scooters - by dealer - craigslist
Wilson Tattoo Shops
Noaa 7 Day Tropical Outlook
Ladyva Is She Married
Dragon’s Dogma 2 Gets New Casual Mode and More Improvements Ahead of PS5 Pro Enhanced Patch - IGN
Springfield Pridenet
La Loft Brockton Photos
Convert Ng Dl To Pg Ml
Dawat Restaurant Novi
Iwu Directory
Edgenuity Spanish 1 Semester 1 Final Exam Answers
spanien-reisemagazin: Pulpo Rezept
Medici Vermittlung GmbH sucht Facharzt (m/w/d) | Gynäkologie und Geburtshilfe (8662) in Cottbus | LinkedIn
Fbisd Homepage
Pollen Count Los Altos
Band Of Loyalty 5E
Results from Form 1 of Page crazybutkool/crear_post.htm
Quincy Herald-Whig Obituaries Past 3 Days
Pawn Shop Moline Il
Kate Spade Outlet Altoona
3Si Tracker Login
Insidekp.kp.org Myhr Portal
Jesus Calling January 8:Whenever you feel inadequate, Remember that I am your ever-present Help.-是是誰 D+ 看世界~*|痞客邦
Rugged Gentleman Barber Shop Martinsburg Wv
Retail Therapy - Meaning, Examples, Benefits, How To Stop?
Locate Td Bank Near Me
Gw2 Maidens Whisper
Spotted Attending Crossword Clue
Goddess Iah K
Matthew Rotuno Johnson
Breast epilation in West Allis
Samantha Mathis Feet
Haverhill, Suffolk - Suffolk Village Info
Pestweb Login
Lake George Ny Craigslist
No Hard Feelings Showtimes Near Amc Classic Ardmore 8
Online Finance & Accounting Courses
Back Pages Chattanooga
Papa's Games Unblocked Games
32 Movies Like Charlie and the Chocolate Factory (2005)
Keyc Tv Weather Radar
42 Best Sites Like Craigslist & Craigslist Personals Alternatives
Www Getelate.com
1nsane (2000) - MobyGames
Craigslist Portland Oregon Motorcycles
Apartment living? How to cold plunge in small spaces
Which Universal Life Option Has A Gradually
Glencoe Algebra 2 Chapter 3 Answer Key Pdf
Skagitregionalhealth.or/Mychart
Bank Account Verification - Datanamix
Latest Posts
Article information

Author: Eusebia Nader

Last Updated:

Views: 5919

Rating: 5 / 5 (60 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Eusebia Nader

Birthday: 1994-11-11

Address: Apt. 721 977 Ebert Meadows, Jereville, GA 73618-6603

Phone: +2316203969400

Job: International Farming Consultant

Hobby: Reading, Photography, Shooting, Singing, Magic, Kayaking, Mushroom hunting

Introduction: My name is Eusebia Nader, I am a encouraging, brainy, lively, nice, famous, healthy, clever person who loves writing and wants to share my knowledge and understanding with you.