在我目前的设置中,我使用带有MOXy的Jersey 2.0,如jersey docs中所述。我完全依赖于 “Auto-Discoverable Features”,因此我不使用任何额外配置或JAXB注释。
我的任务是反序列化服务器端的字符串数组。客户端正在发送JSON消息:
["foo","bar"]
在服务器端,以下方法标题应该反序列化它:
@POST
@Path("/stringArray")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response stringArray(List<String> stringList) {
...
}
问题: stringList的内容为{null,null},因此元素的数量始终是正确的,但字符串设置为null。
同样的小包装类正在工作。这节课:
public static class Data {
public List<String> stringList;
}
将methode签名更改为stringArray(数据数据)并将JSON消息更改为:
{"stringList": ["foo","bar"]}
这两种方法之间的区别是什么?如何使普通字符串数组工作?
更新 所描述的问题由@Blaise的回答修复。但序列化POJO列表的密切相关的问题仍然无效。消息:
[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: 找不到媒体类型= application / json的MessageBodyWriter, type = class java.util.ArrayList,genericType = class 的java.util.ArrayList。]
我找到的唯一解决方案是再次使用包含List ...
的小包装类答案 0 :(得分:3)
您看到的问题是EclipseLink JAXB (MOXy)中的错误:
此错误已在EclipseLink 2.5.1和2.6.0流中修复。您可以从以下链接下载从 2013年7月5日开始的每晚构建: