我有一个通用的响应对象,它接收状态消息和有效负载对象。
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;
如何以通用方式实现这一目标?我可以为候选对象引入一个共同的超类,但不想实现&#34;每种类型的单独Response类。
答案 0 :(得分:0)
您可以按照此处所述注册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);
在序列化您的Response时,Jackson将对所有对象使用默认序列化,但声明自定义序列化程序的对象除外。