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)

References

Top Articles
Traditional English Christmas Cake Recipe
Creamy Chickpea Pasta With Spinach and Rosemary Recipe
Fat Hog Prices Today
Chris wragge hi-res stock photography and images - Alamy
Txtvrfy Sheridan Wy
THE 10 BEST Women's Retreats in Germany for September 2024
Rondale Moore Or Gabe Davis
Lost Ark Thar Rapport Unlock
Merlot Aero Crew Portal
Canelo Vs Ryder Directv
Does Pappadeaux Pay Weekly
Tcu Jaggaer
OpenXR support for IL-2 and DCS for Windows Mixed Reality VR headsets
People Portal Loma Linda
Nitti Sanitation Holiday Schedule
TS-Optics ToupTek Color Astro Camera 2600CP Sony IMX571 Sensor D=28.3 mm-TS2600CP
180 Best Persuasive Essay Topics Ideas For Students in 2024
Arre St Wv Srj
Lancasterfire Live Incidents
Marvon McCray Update: Did He Pass Away Or Is He Still Alive?
Nordstrom Rack Glendale Photos
Td Small Business Banking Login
/Www.usps.com/International/Passports.htm
MLB power rankings: Red-hot Chicago Cubs power into September, NL wild-card race
Aps Day Spa Evesham
Hannaford To-Go: Grocery Curbside Pickup
Bidevv Evansville In Online Liquid
Elbert County Swap Shop
Skycurve Replacement Mat
Die 8 Rollen einer Führungskraft
Wrights Camper & Auto Sales Llc
Danielle Moodie-Mills Net Worth
Tendermeetup Login
آدرس جدید بند موویز
Back to the Future Part III | Rotten Tomatoes
Staar English 1 April 2022 Answer Key
Snohomish Hairmasters
KM to M (Kilometer to Meter) Converter, 1 km is 1000 m
Trivago Myrtle Beach Hotels
Barber Gym Quantico Hours
Telugu Moviez Wap Org
Ucsc Sip 2023 College Confidential
Nid Lcms
Great Clips Virginia Center Commons
فیلم گارد ساحلی زیرنویس فارسی بدون سانسور تاینی موویز
Rick And Morty Soap2Day
Blippi Park Carlsbad
Join MileSplit to get access to the latest news, films, and events!
Sj Craigs
Renfield Showtimes Near Regal The Loop & Rpx
Asisn Massage Near Me
Volstate Portal
Latest Posts
Article information

Author: Merrill Bechtelar CPA

Last Updated:

Views: 6445

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Merrill Bechtelar CPA

Birthday: 1996-05-19

Address: Apt. 114 873 White Lodge, Libbyfurt, CA 93006

Phone: +5983010455207

Job: Legacy Representative

Hobby: Blacksmithing, Urban exploration, Sudoku, Slacklining, Creative writing, Community, Letterboxing

Introduction: My name is Merrill Bechtelar CPA, I am a clean, agreeable, glorious, magnificent, witty, enchanting, comfortable person who loves writing and wants to share my knowledge and understanding with you.