Java Jackson @JsonIgnoreType

1. Overview

Jackson is a widely-used Java library for JSON processing, facilitating both serialization and deserialization of Java objects to and from JSON. Occasionally, developers may find the need to exclude an entire type (class) from being serialized or deserialized. Jackson provides the @JsonIgnoreType annotation for this purpose. In this blog post, we will delve into its usage in the context of a User Management System.

Check out all the Java Jackson JSON tutorials and examples: 50+ Java Jackson JSON Tutorials with Examples

@JsonIgnoreType Annotation Overview

The @JsonIgnoreType annotation is used to mark a type (i.e., class or interface) to be ignored during serialization and deserialization processes. When a type is annotated with @JsonIgnoreType, any property with that type will be ignored.

2. Development Steps

1. Set up a new Maven project.

2. Incorporate the required Jackson dependencies.

3. Define classes, ensuring one class uses the @JsonIgnoreType annotation.

4. Craft a demonstration main class.

5. Serialize a sample object into JSON format.

3. Create a Maven Project

There are different ways to create a simple Maven project:

Create a Simple Maven Project using the Command Line Interface

Create a Simple Maven Project using  Eclipse IDE

Create a Simple Maven Project using  IntelliJ IDEA

4. Maven Dependencies

Open the pom.xml file, and add the following Jackson data binding dependency:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.0</version>
</dependency>

5. Code Program

// Address.java
@JsonIgnoreType
public class Address {
    private String street;
    private String city;
    // Constructors, getters, setters...
}

// User.java
public class User {
    private int id;
    private String username;
    private Address address;
    // Constructors, getters, setters...
}

// MainDemo.java
import com.fasterxml.jackson.databind.ObjectMapper;
public class MainDemo {
    public static void main(String[] args) {
        Address address = new Address("123 Elm Street", "Springfield");
        User user = new User(1, "johndoe", address);
        ObjectMapper mapper = new ObjectMapper();
        try {
            String json = mapper.writeValueAsString(user);
            System.out.println(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output:

{"id":1,"username":"johndoe"}

Code Explanation:

The Address class is marked with the @JsonIgnoreType annotation. Consequently, during serialization, any property of this type will be ignored by Jackson.

In our MainDemo class, even though the User object has an Address instance, it gets excluded during serialization due to the @JsonIgnoreType annotation. The resultant JSON output only contains the id and username fields of the User object, excluding the entire address field.

6. Conclusion

The @JsonIgnoreType annotation in Jackson offers developers a powerful tool for excluding entire types during the JSON serialization and deserialization processes. This can be particularly handy in situations where certain types should not be exposed in serialized representations or need to be excluded for other reasons.

Check out all the Java Jackson JSON tutorials and examples: 50+ Java Jackson JSON Tutorials with Examples

Comments