我有以下类(class)
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 来模仿这个层次结构,但我在这里发布的示例比实际对象简单得多。有没有一种方法可以使用 Jackson 生成 JSON 的自定义层次结构
最佳答案
编写自定义序列化程序:
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();
}
}
通过使用 @JsonSerialize
注解 Foo
来注册自定义序列化器:
@JsonSerialize(using = FooSerializer.class)
public class Foo {
...
}
关于java - 为传入对象生成嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661481/