gpt4 book ai didi

java - jackson 与 jaxb

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:36:00 25 4
gpt4 key购买 nike

当在 Jersey 中使用 Jackson JSON 处理器时,我何时以及为什么需要在两者之间使用 JAXB 注释? 对象->JAXB->JSON

Jackson 还提供了它自己的 JAX-RS 提供程序以直接访问 Object->JSON。这种方法缺少什么?或者为什么我更喜欢另一个

ps:我也用spring

最佳答案

要生成 JSON,您通常只需指定 @Produces(MediaType.APPLICATION_JSON)。然而,这将默认采用 JAXB 路由。

使用 Object -> JAXB -> JSON,您必须使用 @XmlRootElement 注释要映射的类。这会很好地工作,但是一旦你开始序列化一个 HashMap 你不会以明显的 {keyOne:"one",keyTwo:"two"} 结束,而是一些奇怪的东西,比如 {entry:[{key:"keyOne",value:"one"},{key:"keyTwo",value:"two"}]}

因此,要采用直接对象 -> 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。

另请参阅我的问题:Java.util.Map to JSON Object with Jersey / JAXB / Jackson

引用:http://jersey.java.net/nonav/documentation/latest/json.html#d4e894

关于java - jackson 与 jaxb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com