我在 CXF 中使用 Jackson 来序列化/反序列化数据。不幸的是,我在配置 CXF/Jackson 来反序列化 JSON 数组时遇到困难。我很乐意帮助解决这个问题。
到目前为止,大部分 json 数据都是对象格式,即
{ "objectCollection": [ {...}, {...}, {...}... ] }
但是,所讨论的 json 数据的形式为:
[ {...}, {...}, {...} ]
Web 服务端点需要一个“GroupsDto”对象(见下文)
具有单一属性——一组组的集合,即
通过 JSON 数组传输。
@PATH(...)
public Response createGroups(GroupsDto groups) {
...
}
我将 @JsonDeserialize 添加到 GroupsDto 集合属性中,但它不起作用。我继续收到:“无法将 GroupsD 实例反序列化到 START_ARRAY 令牌之外”
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() {
}
}
并在反序列化时使用此类。这种方法对我有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)