【问题标题】:Generic Jackson property with concrete Serializer具有具体序列化程序的通用杰克逊属性
【发布时间】:2014-04-09 08:21:08
【问题描述】:

我有一个通用的响应对象,它接受状态消息和有效负载对象。

public class Response {
    private String status;
    private Object payload;
    // getters / setters
}

对象可以是任何类型,包括列表或数组。 (很像这里:Jackson JSON List with Object Type)。

在对象是 List 的情况下,我需要一个序列化器和一个注解来告诉 Jackson:

@JsonSerialize(using = ModelSerializer.class)
private List<Model> models;

如何以通用方式实现这一点?我可以为候选对象引入一个通用超类,但不想为每种类型“实现”一个单独的 Response 类。

【问题讨论】:

    标签: java json serialization types jackson


    【解决方案1】:

    您可以通过为 List 注册序列化程序来配置您的对象映射器,如下所述:http://wiki.fasterxml.com/JacksonHowToCustomSerializers

    ObjectMapper mapper = new ObjectMapper();
    SimpleModule testModule = new SimpleModule("MyModule", new Version(1, 0, 0, null));
    testModule.addSerializer(new ModelSerializer());
    mapper.registerModule(testModule);
    

    在序列化您的响应时,Jackson 将对所有对象使用默认序列化,但声明自定义序列化程序的对象除外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 2020-04-16
      • 2021-11-08
      • 2016-08-24
      • 1970-01-01
      • 2017-12-09
      相关资源
      最近更新 更多