Christopher Cheng
Christopher Cheng

Reputation: 49

How do I change a JSON array to JSON elements with Jackson

Can Jackson has a simpler way to deserialize a java object with a list into elements using Annotation?

Instead of this

{
[{id: 1, name: 'a'},{id: 2, name: 'b'}]
}

I want this

{
   "1": {name: 'a'},
   "2": {name: 'b'}
}

Upvotes: 0

Views: 33

Answers (1)

Christopher Cheng
Christopher Cheng

Reputation: 49

I used a custom serializer to do it

 public static class CustomListSerializer extends StdSerializer<List> {

    public CustomListSerializer() {
        this(null);
    }

    public CustomListSerializer(Class<List> t) {
        super(t);
    }

    @Override
    public void serialize(
            List list,
            JsonGenerator generator,
            SerializerProvider provider)
            throws IOException, JsonProcessingException {
        generator.writeStartObject();
        int index = 1;
        for (Object item : list) {
            generator.writeObjectField(String.valueOf(index), item);
            index++;
        }
        generator.writeEndObject();
    }
}

Upvotes: 1

Related Questions