Jackson @JsonFilter
Using @JsonFilter
Step-1: Create a class annotated with @JsonFilter
and assign a filter name.
Step-2: Create the instance of SimpleFilterProvider
and add our filter studentFilter
using addFilter()
method.
SimpleFilterProvider filterProvider = new SimpleFilterProvider();
filterProvider.addFilter("studentFilter",
SimpleBeanPropertyFilter.serializeAllExcept("stdName", "stdCity"));
Step-3: Set the instance of SimpleFilterProvider
to ObjectMapper
using setFilterProvider()
method.
ObjectMapper mapper = new ObjectMapper();
mapper.setFilterProvider(filterProvider);
Step-4: Now serialize the instance of Student
class.
Student student = new Student("Mohit", 30, "ABCD", "Varanasi");
String jsonData = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(student);
System.out.println(jsonData);
stdName
and stdCity
properties will not be serialized. Find the output.
{
"stdAge" : 30,
"stdCollege" : "ABCD"
}
SimpleBeanPropertyFilter
SimpleFilterProvider
is the implementation of PropertyFilter
that only uses property name to determine if it should be serialized or filtered out. Find some methods of SimpleFilterProvider
.
serializeAllExcept()
: Serializes all properties except the properties configured to this method.filterOutAllExcept()
: Serializes properties only configured to this method.serializeAll()
: Serializes all properties and filters out nothing.
@JsonFilter at Property Level
We can use @JsonFilter
annotation on fields, methods and constructor parameters since Jackson 2.3. Here we will create two filters using @JsonFilter
at property level and filter the properties using serializeAllExcept()
and filterOutAllExcept()
methods.
Results
JacksonJsonFilterTest