json - Moxy、JSON 和 Jersey 2.0 不会反序列化纯字符串数组

标签 json jersey moxy

在我当前的设置中,我使用 Jersey 2.0 和 MOXy,如 jersey docs 中所述.我完全依赖
“自动发现功能”,所以我不使用任何额外的配置或 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(Data data) 并将 JSON 消息更改为:
{"stringList": ["foo","bar"]}

这两种方法有什么区别,我怎样才能让纯字符串数组工作?

更新:
所描述的问题已由@Blaise 的回答解决。但是序列化 POJO 列表的密切相关问题仍然不起作用。信息:

[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=class java.util.ArrayList.]



我找到的唯一解决方案是再次使用一个包含 List 的小包装类...

最佳答案

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

  • http://bugs.eclipse.org/412336

  • 此错误已在 EclipseLink 2.5.1 和 2.6.0 流中修复。您可以从 开始下载每晚构建2013 年 7 月 5 日 从以下链接:
  • http://www.eclipse.org/eclipselink/downloads/nightly.php
  • 关于json - Moxy、JSON 和 Jersey 2.0 不会反序列化纯字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17468305/

    相关文章:

    Python urllib2 : Receive JSON response from url

    java - 记录 JSON @Jersey Rest WS 的请求体

    java - 如何将 pojo 设置为 moxy?

    java - 无法在javascript中检索json对象内容

    php - 使用 PHP 解析 JSON

    javascript - 存储信息元素,一个好的做法吗?

    java - Jersey 2.5.x 中的 JSONConfiguration 去了哪里?

    java - 如何在没有 web.xml 的情况下使用 Jersey 作为 JAX-RS 实现?

    java - 具有涉及自定义比较器的 xml 反向引用的编码实体

    xpath - EclipseLink MOXy : Logical operators in XmlPath annotation