Konstantinos Raptis
Konstantinos Raptis

Reputation: 149

How to avoid deserialize empty JSON Array elements from JSON String while using Jackson

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

Answers (3)

Michał Ziober
Michał Ziober

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

Ido Segal
Ido Segal

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

vaquar khan
vaquar khan

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

Related Questions