当前位置: 首页 > 面试题库 >

杰克逊与jaxb

孟智志
2023-03-14
问题内容

JSON在Jersey上使用Jackson 处理器时,何时以及为何需要JAXB在两者之间使用注释?Object->JAXB->JSON

杰克逊(Jackson)还提供了自己的JAX-RS服务提供商以直接使用Object->JSON。这种方法缺少什么?还是为什么我比其他人更喜欢

ps:我也用弹簧


问题答案:

为了生成JSON,通常只需指定即可@Produces(MediaType.APPLICATION_JSON)。但是,这将默认采用JAXB路由。

使用Object-> JAXB->
JSON,您必须注释要映射的类@XmlRootElement。这可以很好地工作,但是一旦您要序列化a,HashMap您将不会得到明显的{keyOne:"one",keyTwo:"two"}而是类似的东西{entry:[{key:"keyOne",value:"one"},{key:"keyTwo",value:"two"}]}

因此,要采用直接的Object-> JSON方式,只需在web.xml中指定以下内容:

    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>

使用此JSON映射将按您期望的方式工作。只是不要忘记删除@XmlRootElement注释,它们会在POJO映射打开时强制生成XML。



 类似资料:
  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 问题内容: Spring MVC 3.1与Jackson 2.0兼容吗?Spring MVC在类路径上自动检测Jackson并将其委托给Jackson以JSON内容类型的请求是否仍然有效? 问题答案: 在Spring 3.2中添加了对Jackson 2的支持,并且还向后移植到了Spring 3.1.2(SPR-9507)

  • 我在Java创建了一个REST网络服务。我使用Joda-time作为日期,使用Jackson作为JSON格式。所有内容都上传到Glassfish 4.1服务器上。 avax.ws.rs-api-2.0.1.jar joda-time-2.7.jar jackson-annotation-2.8.8.jar jackson-core-2.8.8.jar jackson-databind-2.8.8.

  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A

  • 首先,我不熟悉Jython。我正在寻找一种将python代码集成到Java项目中的方法。因此我正在调查Jython。 我正在尝试将一个 json 字符串转换为 Java 对象 - 在 python 中。 首先,我一直在努力让Jython找到我的java类。由于缺乏更优雅的解决方案,我可以通过简单地执行以下操作来向前迈进: 无论如何。。。 我正在尝试以下操作: 但是,在运行时,我收到以下错误: 我不

  • 我需要序列化依赖于 JAXB 注释的 POJO 对象。我可以很容易地用杰克逊做到这一点(添加)。在没有任何明确编码的情况下可以吗? 如果能像这样流利地写出来就太好了: 然而这个忽略了JAXB。我想找到一些干净利落的解决方案。杰克逊JAXB是非常常见的做法,这将是如此的耻辱,如果RestAssured不配备它引擎盖下。我在论坛上发现了这样的东西: 但这将是我最后的手段。