Moxy,JSON和Jersey 2.0不会反序列化纯String字符串

adl*_*ler 5 json jersey moxy

在我目前的设置中,我使用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的小包装类...

bdo*_*han 3

您看到的问题是由于EclipseLink JAXB (MOXy)中的错误造成的:

此错误已在 EclipseLink 2.5.1 和 2.6.0 流中修复。从2013 年 7 月 5 日开始,您可以通过以下链接下载每晚版本: