如何在fastxml JSON转换中为集合成员选择类

时间:2017-04-28 22:49:04

标签: json jersey jackson json-serialization

在我的REST应用程序中,我使用的是quickxml来序列化和反序列化POJO到JSON。在这样的情况下,我遇到像List这样的集合的问题。

public class JsonRequest {
    public int anumber;
    public String astring;
    public List<XyzClass> data;
}

属性 anumber astring 来回转换就好了,没有任何注释。对于** data *,虽然编译器可以看到List元素是(应该是)XyzClass,但是这些信息对于jackson框架是不可用的,所以它不知道在反序列化元素时要使用哪个类。

出于某种原因,我无法理解用于解决此问题的注释的文档。 @JsonDeserialize 注释对此没有帮助。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

经过一番研究,我终于找到了如何使这项工作。

public class JsonRequest {
    public int anumber;
    public String astring;
    @JsonDeserialize(contentAs = XyzClass.class) // <-- Added    
    public List<XyzClass> data;
}

要回答上述评论中的问题, XyzClass 的代码只是一个简单的POJO:

public class XyzClass {
    public String name;
    public int age;
}

让我感到震惊的是,我正在寻找一个注释 @JsonDeserializeContentAs(class = XyzClass.class)的效果,因为我错过了< strong> @JsonDeserilize 有 contentAs 选项。

希望此帖可以为其他人节省同样的麻烦。