为传入对象生成嵌套 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 {
...
}