具有串行器的通用杰克逊属性

时间:2014-04-09 08:21:08

标签: java json serialization types jackson

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

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类。

1 个答案:

答案 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将对所有对象使用默认序列化,但声明自定义序列化程序的对象除外。