[英]jackson with jaxb
在澤西島使用傑克遜JSON
處理器時,何時以及為什么我需要在兩者之間使用JAXB
注釋? Object->JAXB->JSON
傑克遜還提供了自己的JAX-RS
提供程序來直接使用Object->JSON
。 這種方法缺少什么? 或者為什么我更喜歡另一個
ps:我也用春天
要生成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中指定以下內容:
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
使用此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注釋; 除了傑克遜的注釋,他們沒有提供任何東西。 實際上,大多數情況下,通過使用Java Bean命名約定,可以在沒有任何注釋的情況下處理基本案例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.