如何使用Jackson将JSON数组更改为JSON元素

时间:2017-07-09 13:02:20

标签: jackson jackson-databind

杰克逊有一种更简单的方法可以使用Annotation将带有列表的java对象反序列化为元素吗?

而不是这个

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

我想要这个

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

1 个答案:

答案 0 :(得分:1)

我使用自定义序列化程序来执行此操作

 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();
    }
}