当我在泽西岛使用杰克逊JSON处理器时,我什么时候以及为什么需要在中间使用JAXB注释?Object->JAXB->JSON
杰克逊还为go direct Object->JSON提供了自己的JAX-RS提供商。这种方法缺少什么?或者为什么我更喜欢另一个
ps:我用的也是spring
发布于 2011-05-14 22:36:19
要生成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映射,它将以您期望的方式工作。但不要忘记删除XML,它们会在启用POJO映射时强制生成@XmlRootElement。
也可以看看我关于这个的问题:Java.util.Map to JSON Object with Jersey / JAXB / Jackson
参考:http://jersey.java.net/nonav/documentation/latest/json.html#d4e894
发布于 2011-05-15 22:32:23
如果您还希望以XML格式生产/使用数据,则只需要使用JAXB注释。
如果您只关心JSON,那么就不要使用JAXB注释;除了Jackson注释之外,它们没有提供任何东西。事实上,大多数情况下,通过使用Java Bean命名约定,无需任何注释即可处理基本情况。
https://stackoverflow.com/questions/6001817
复制相似问题