使用Jackson基于POJO属性序列化/反序列化多态集合

时间:2013-01-22 14:28:12

标签: json jackson

在我的项目中我有类似的东西

enum Species {
    DOG, CAT
}

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "type")
@JsonSubTypes({
        @Type(value = Cat.class, name = "cat"),
        @Type(value = Dog.class, name = "dog") })
class Animal {
    Species species;
    String name;
}

class Cat extends Animal {
    Cat() {
        species = Species.CAT;
    }
    ...
}

class Dog extends Animal {
    Dog() {
        species = Species.DOG;
    }
    ...
}

class Zoo {
    Collection<Animal> animals;
}

我需要将动物园序列化/反序列化为json。我按照本指南http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html 它运作得很好。但它为json对象添加了多余的属性“type”,我真的不需要它。有没有办法只使用我的pojo的物种属性来正确地序列化/反序列化集合?

1 个答案:

答案 0 :(得分:0)

杰克逊的2.2.0版应该已经解决了这个问题。

您可以在此处查看问题的详细信息及其修复方法: https://github.com/FasterXML/jackson-databind/issues/23