Jackson – How to ignore null fields

In Jackson, we can use @JsonInclude(JsonInclude.Include.NON_NULL) to ignore the null fields.

P.S Tested with Jackson 2.9.8

1. Jackson default include null fields

1.1 Reviews a POJO, for testing later.

Staff.java

public class Staff {

    private String name;
    private int age;
    private String[] position;               
    private List<String> skills;            
    private Map<String, BigDecimal> salary; 

1.2 By default, Jackson will include the null fields.

JacksonExample.java

package com.mkyong;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class JacksonExample {

    public static void main(String[] args) {

        ObjectMapper mapper = new ObjectMapper();

        Staff staff = new Staff("mkyong", 38);

        try {

            String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff);

            System.out.println(json);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Output


{
  "name" : "mkyong",
  "age" : 38,
  "position" : null,
  "skills" : null,
  "salary" : null
}

To ignore the null fields, put @JsonInclude on class level or field level.

2. @JsonInclude – Class Level

Staff.java

import com.fasterxml.jackson.annotation.JsonInclude;

											//	ignore null fields , class level
@JsonInclude(JsonInclude.Include.NON_NULL) 	//  ignore all null fields
public class Staff {

    private String name;
    private int age;
    private String[] position;              
    private List<String> skills;           
    private Map<String, BigDecimal> salary; 
	//...

Output


{
  "name" : "mkyong",
  "age" : 38
}

3. @JsonInclude – Field Level

Staff.java

import com.fasterxml.jackson.annotation.JsonInclude;

public class Staff {

    private String name;
    private int age;
    
	@JsonInclude(JsonInclude.Include.NON_NULL) //ignore null field on this property only
    private String[] position;              
    
	@JsonInclude(JsonInclude.Include.NON_NULL) //ignore null field on this property only
    private List<String> skills;           
	
    private Map<String, BigDecimal> salary;

Output


{
  "name" : "mkyong",
  "age" : 38,
  "salary" : null
}

4. ObjectMapper.setSerializationInclusion

Alternatively, we also can configure to ignore null fields globally:

JacksonExample2.java

package com.mkyong;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class JacksonExample2 {

    public static void main(String[] args) {

        ObjectMapper mapper = new ObjectMapper();

        Staff staff = new Staff("mkyong", 38);

        try {

            // ignore the null fields globally
            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

            String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff);

            System.out.println(json);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Output


{
  "name" : "mkyong",
  "age" : 38
}

References

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

avatar