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

时间:2013-07-04 10:46:38

标签: json jersey moxy

在我目前的设置中,我使用带有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 ...

的小包装类

1 个答案:

答案 0 :(得分:3)

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

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