Reputation: 149
I am using Jackson 2 library and I am trying to deserilize a JSON response, which looks like:
{
"employee": [
{},
{
"Details": [
{
"Name": "value",
"Lastname": "value"
}
]
}
]}
For some reasons, there is an empty element at my employee array. Is it possible to discard that element and avoid to deserialize it, during deserialization process? Currently, my code deserialize the empty employee as an Employee POJO class with null fields.
My code looks like:
ObjectMapper mapper = new ObjectMapper();
Empoyee[] array = mapper.readValue(json, Empoyee[].class);
PS. I cannot touch the JSON response. It is what it is...
Upvotes: 0
Views: 2763
Reputation: 38625
You need to write custom deserialiser or filter out empty
objects after deserialisation process. Second approach sounds much easier because except custom deserialiser for bean you need to extend already implemented deserialiser for arrays (com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer
) and filter out null
or empty
beans.
See also:
Upvotes: 1
Reputation: 422
First, please make sure that you have setters, getters and constructors, after that, you can use the following:
Employee employee = mapper.readValue(yourJson, Employee.class);
Upvotes: 0
Reputation: 11449
Hope it will help you .
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.setSerializationInclusion(Include.NON_EMPTY);
Or
ObjectMapper mapper = new ObjectMapper ().configure(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).setSerializationInclusion(
JsonInclude.Include.NON_NULL);
Upvotes: 0