我在 CXF 中使用 Jackson 来序列化/反序列化数据。不幸的是,我在配置 CXF/Jackson 来反序列化 JSON 数组时遇到了困难。如果能帮助解决问题,我将不胜感激。
到目前为止,大部分 json 数据都是对象格式,即
{ "objectCollection": [ {...}, {...}, {...}... ] }
但是,有问题的 json 数据是以下形式:
[ {...}, {...}, {...} ]
Web 服务端点需要一个“GroupsDto”对象(见下文) 有一个单一的属性 -- 组的集合,它是 通过 JSON 数组传输。
@PATH(...)
public Response createGroups(GroupsDto groups) {
...
}
我按如下方式将 @JsonDeserialize 添加到 GroupsDto 集合属性,但它不起作用。我继续得到:“无法从 START_ARRAY token 中反序列化 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() {
}
}
并在反序列化时使用这个类。这种方法对我有用。
关于java - 如何反序列化 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11106379/