jackson与jaxb

在泽西岛使用jacksonJSON处理器时,我何时以及为什么需要在两者之间使用JAXB注释? Object->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"}]}

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

   com.sun.jersey.api.json.POJOMappingFeature true  

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

另外看看我的问题: 使用Jersey / JAXB / Jackson的Java.util.Map到JSON对象

参考: http : //jersey.java.net/nonav/documentation/latest/json.html#d4e894

如果您还想以XML格式生成/使用数据,则只需使用JAXB注释。

如果您只关心JSON,请不要使用JAXB注释; 除了jackson的注释,他们没有提供任何东西。 实际上,大多数情况下,通过使用Java Bean命名约定,可以在没有任何注释的情况下处理基本案例。