我在CXF中使用Jackson来序列化/反序列化数据。不幸的是,我在配置CXF/Jackson来反序列化JSON数组时遇到了困难。我希望能得到帮助来解决这个问题。
到目前为止,大多数json数据都是对象格式,即{ "objectCollection": [ {...}, {...}, {...}... ] }
但是,所讨论的json数据的形式为:[ {...}, {...}, {...} ]
个
Web服务端点需要一个“GroupsDto”对象(请参见下文),该对象具有一个属性--组的集合,该属性通过JSON数组传输。
@PATH(...)
public Response createGroups(GroupsDto groups) {
...
}
我将@JsonDeserialize添加到GroupsDto集合属性中,如下所示,但它不起作用。我继续得到:“无法在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;
}
...
}
3条答案
按热度按时间093gszye1#
如果json数据的格式为:
您必须使用添加另一个类,例如'wrapper':
并在反序列化时使用这个类。这种方法对我很有效。
mqkwyuun2#
你只需要在你的setter中指定
@JsonDeserialize(contentAs=GroupDto.class)
。序列化总是在getdeserialization总是在set,或者如果你愿意,你可以在字段中同时指定这两个。Serialize和Deserialize的说明文件
代码示例:
brtdzjyr3#
不使用 Package 类
使用Jackson的对象Map器
数据如下...
你可以
如果你想把它转换成一个列表,你可以进一步这样做
参考https://www.baeldung.com/jackson-collection-array