java - 为传入对象生成嵌套 JSON

标签 java json jackson

我有以下类(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/

相关文章:

java - 如何在 POST 请求时在 HTTP header 中设置自定义变量

java - 在 Spring MVC 中使用 Jackson JSON 时,如何默认启用 Pascal 大小写?

java - Spring 启动2.2.2 : Jackson serializer for custom pagination doesn't work

java - 如何在远程服务器上启动 java socket-server

java - 处理 JPEG 元数据的最佳库是什么?

android - Activity 无法使用 json 填充 recyclerView

c# - 如果我只使用 JSON.Net,我可以安全地删除在我的 C# 模型类中指定后缀的字段和属性吗

javascript - 从 jQuery Ajax 访问 JSON 结果

java - 将map传递给Jackon的valueToTree方法时将java.sql.Timestamp转换为StringNode

java - 如何使用Java实现简单的密码登录