Java 具有具体序列化程序的泛型Jackson属性

Java 具有具体序列化程序的泛型Jackson属性,java,json,serialization,types,jackson,Java,Json,Serialization,Types,Jackson,我有一个通用响应对象,它接受一条状态消息和一个有效负载对象 public class Response { private String status; private Object payload; // getters / setters } 对象可以是任何类型,包括列表或数组。(很像这里:) 如果对象是列表,我需要一个序列化程序和一个注释来告诉Jackson: @JsonSerialize(using = ModelSerializer.class) privat

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

public class Response {
    private String status;
    private Object payload;
    // getters / setters
}
对象可以是任何类型,包括列表或数组。(很像这里:)

如果对象是列表,我需要一个序列化程序和一个注释来告诉Jackson:

@JsonSerialize(using = ModelSerializer.class)
private List<Model> models;
@JsonSerialize(使用=ModelSerializer.class)
私有列表模型;

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

您可以通过注册列表的序列化程序来配置对象映射器,如下所述:

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

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