我在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() {
}
}
并在进行反序列化时使用此类。这种方法对我有用。