【问题标题】:JSON ArrayList in Jersey泽西岛的 JSON ArrayList
【发布时间】:2011-10-14 15:38:00
【问题描述】:

我正在尝试从 jersey 返回一个 List,它在 XML 中运行良好,但是当我将它输出为 JSON 时,它声称,“Java 类的消息正文编写器......和 ​​Java 类型......并且未找到 MIME 媒体类型 application/json”。

我没有为处理实用程序列表进行任何配置,因为我认为 jersey + jersey-json-1.9 自动处理 JSON 的这些东西,就像它处理 XML 一样。

其他人对此有任何运气吗?

【问题讨论】:

    标签: java json jersey jackson


    【解决方案1】:

    我发现我第一次尝试解决同样的问题失败并显示此错误消息,解决方案与另一个 SO 问题 Jersey: com.sun.jersey.server.impl.template.ViewableMessageBodyWriter 中给出的相同:我忘记将 jersey-json 模块添加到我的项目中。

    【讨论】:

      【解决方案2】:

      对于带有 JSON 的列表,您应该不需要任何包装器,但您确实需要启用 JSON 支持的“POJO 映射”样式。

      【讨论】:

        【解决方案3】:

        回答。这需要创建一个提供者。代码如下:

        @Provider
        @Singleton
        @Produces(MediaType.APPLICATION_JSON)
        public class ContextResolver extends JacksonJaxbJsonProvider{
        
             public ContextResolver() throws Exception {
                super();
                ObjectMapper mapper = new ObjectMapper();
                setMapper(mapper);
            }
        }
        

        【讨论】:

          【解决方案4】:

          我设法在最近的 Jersey json 库(v1.14 Sep 2012)中解决了 JSON 数组“错误”。秘密成分是 JSONConfiguration 和 ContextResolver 魔术。请参阅我的以下帖子,它有一个完整的代码示例,自定义的 ContextResolver 和 rest Application 类乍一看可能有点模糊。

          How to serialize Java primitives using Jersey REST

          基元和零元素或单元素列表数组已正确序列化为 JSON 文档。如果 Java 列表为空,则如果没有自定义解析器,您将无法获得正确的 json[] 数组字段。我的帖子列出了您需要的所有 .jar 库。我正在使用最新的 v1.14 Jersey 存档。

          【讨论】:

            猜你喜欢
            • 2015-01-05
            • 2014-10-06
            • 1970-01-01
            • 2011-08-02
            • 2012-09-19
            • 1970-01-01
            • 1970-01-01
            • 2016-06-30
            • 2017-05-13
            相关资源
            最近更新 更多