为传入对象生成嵌套JSON

时间:2015-07-27 19:19:15

标签: java json jackson

我有以下课程

public class Foo {
    private String a;
    private String b;
    private String c;
    private Bar d;
}

为此,我想生成以下JSON

{
    "values":
    {
        "value_id":"<value_of_field_a>"
    },
    "bar":
    {
        "id":"<value_of_field_b>",
        "object":
        {
            "<value_of_bar_object_d>"
        }
    }
    "seq":"<value_of_field_c>"
}

是的,我可以创建一个模仿这个层次结构的pojo,但我在这里发布的示例比实际对象简单得多。有没有办法可以使用杰克逊生成JSON的自定义层次结构

1 个答案:

答案 0 :(得分:2)

编写自定义序列化程序:

public class FooSerializer extends JsonSerializer<Foo> {

    @Override
    public void serialize(Foo value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeObjectFieldStart("values");
        jgen.writeStringField("value_id", value.getA());
        jgen.writeEndObject();
        // TODO: serialize the other fields
        jgen.writeEndObject();
    }
}

通过Foo注释@JsonSerialize来注册自定义序列化程序:

@JsonSerialize(using = FooSerializer.class)
public class Foo {
...
}