我有以下课程
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的自定义层次结构
答案 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 {
...
}