我在CXF中使用Jackson来对数据进行序列化/反序列化。不幸的是,我在配置CXF / Jackson来反序列化JSON数组时遇到困难。感谢您为解决问题提供的帮助。

到目前为止,大多数json数据都是对象格式的,即
{ "objectCollection": [ {...}, {...}, {...}... ] }
但是,有问题的json数据具有以下形式:
[ {...}, {...}, {...} ]
Web服务端点需要一个“GroupsDto”对象(请参阅下文)
具有单一属性-组的集合,即
通过JSON数组传输。

@PATH(...)
public Response createGroups(GroupsDto groups) {
...
}

我向GroupsDto集合属性添加了@JsonDeserialize,如下所示,但它不起作用。我继续得到:“无法从START_ARRAY令牌中反序列化GroupsDto实例”
public class GroupsDto {

       private Collection<GroupDto> groups;

       /**
        * @return the groups
        */
       @XmlElement(name="group")
       @JsonDeserialize(contentAs=GroupDto.class)
       public Collection<GroupDto> getGroups() {
               return groups;
       }
...
}

最佳答案

如果json数据具有以下形式:

[ {...}, {...}, {...} ]

您必须使用添加另一个类,例如“包装器”:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ListDto extends ArrayList<GroupDto> {

    public ListDto() {
    }
}

并在进行反序列化时使用此类。这种方法对我有用。

08-26 11:56