- Given the list of user defined objects or POJO and object may contains null values.
- When we are converting list of objects to JSON, we do not want to serialize the null values.
- We have already discussed about not serializating of empty values.
- We will use setSerializationInclusion feature of Jackson’s ObjectMapper to block serialization of nulls.
- We will create Person class and we will perform the following operations with Person class
- Convert List of Person objects to JSON
- Serializes the null values
- Convert List of Person objects to JSON
- Do not serializes the null values
- Convert List of Person objects to JSON
Jackson ObjectMapper maven dependencies
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.1</version> </dependency>
Program – Serialize non nulls using Jackson ObjectMapper
1.) Person Class:
- We will create the instance of Person pojo class.
- Person object will contains some null values.
- Serialize person object using objectmapper jackson.
public class Person { public String firstName; public String lastName; public int age; public Person() { } public Person(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } }
2.) JSONListConverter Class:
We will perform couple of conversions from list of person objects to json.
- Convert list of person objects to JSON (Default serialization)
- Serializing the null values of person objects
- Convert list of person objects to JSON
- Do not serialize the null values of person objects
package org.learn.jackson; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; public class JSONListConverter { public static void main( String[] args ) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); //Set pretty printing of json objectMapper.enable(SerializationFeature.INDENT_OUTPUT); //List of person objects which will be converted to JSON List personList = Stream.of( new Person("Mike", "harvey", 34), new Person() ) .collect(Collectors.toList()); //1. Convert List Person to JSON (Serializing null values) String arrayToJson = objectMapper.writeValueAsString(personList); System.out.println("1. Convert List of person object to JSON (Serializing null values) :"); System.out.println(arrayToJson); //ObjectMapper for not serializing null values objectMapper = new ObjectMapper(); //Set pretty printing of json objectMapper.enable(SerializationFeature.INDENT_OUTPUT); //Setting the serializing feature: do not serialize null values objectMapper.setSerializationInclusion(Include.NON_NULL); arrayToJson = objectMapper.writeValueAsString(personList); System.out.println("2. Convert List of person object to JSON (do not Serializing null values):"); System.out.println(arrayToJson); } }
Output – Serialize non nulls using Jackson ObjectMapper
1. Convert List of person object to JSON (Serializing null values) : [ { "firstName" : "Mike", "lastName" : "harvey", "age" : 34 }, { "firstName" : null, "lastName" : null, "age" : 0 } ] 2. Convert List of person object to JSON (Serializing non null values): [ { "firstName" : "Mike", "lastName" : "harvey", "age" : 34 }, { "age" : 0 } ]