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