为传入对象生成嵌套 JSON
Generating nested JSON for incoming object
我关注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 {
...
}
我关注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 {
...
}