使用Jackson反序列化多态映射,其中类型信息在字符串键中给出

时间:2016-04-19 10:21:20

标签: java json jackson polymorphism deserialization

假设一个类" Json2JavaModel"

public class Jason2JavaModel {

    public String someAttribute;

    public Map<String, Representation> representations;

    public String getSomeAttribute() {
        return someAttribute;
    }

    public void setSomeAttribute(String someAttribute) {
        this.someAttribute = someAttribute;
    }

    @JsonProperty(value = "_embedded")
    public Map<String, Representation> getRepresentations() {
        return representations;
    }

    public void setRepresentations(
            Map<String, Representation> representations) {
        this.representations = representations;
    }
}

其中Representation是不同JSON表示的公共基接口。在序列化方面,没有问题,因为Jackson知道实际的Java类型。但是反序列化必须是多态的。类型信息存储在每个条目的映射键中(不是规范的类名,而是唯一的)。因此,可以提供密钥字符串&lt; - &gt;目标类配置。有没有办法告诉杰克逊,它应该使用map键作为类型定义来反序列化条目值?

祝你好运, 的Marius

1 个答案:

答案 0 :(得分:0)

您正在寻找ObjectMapper。请查看我对JSON POJO consumer of polymorphic objects的答案。