簡體   English   中英

傑克遜與jaxb

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM