2014-10-07 109 views
1

我使用JAXB從XSD生成POJO。我正在使用Jersey/Jackson將POJO序列化爲JSON。對於整個項目,我創建了一個ObjectMapper,它具有Inclusion.NON_NULL集合。但是對於一個特定的序列化類,我想包含空值。我知道,我必須在POJO上使用Inclusion.ALWAYS來覆蓋ObjectMapper,但我使用的POJO是從XSD生成的。如何將Jackson註釋添加到由JAXB/XJC從XSD生成的POJO?

在編組期間,有沒有辦法將這個Jackson的註釋@JsonSerialize(include=Inclusion.ALWAYS)添加到該特定的POJO?

http://pastebin.com/a2Gvw19U

回答

3

如果你只是想添加一個註釋,可以考慮使用我的JAXB2 Annotate Plugin。例如參見this example,特別是this bindings file

在你的情況下,綁定看起來像:(沒有測試,只是一個草圖)

<jaxb:bindings node="xs:complexType[@name='myPOJO']"> 
    <annox:annotate> 
     @org.codehaus.jackson.map.annotate.JsonSerialize 
      (include=org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.ALWAYS) 
    </annox:annotate> 
</jaxb:bindings> 

一些提示:

  • 語法是Java,但是你有使用完全限定的類名稱。
  • Jackson JAR必須出現在XJC類路徑中,否則您的註釋將不會被找到。

SO免責聲明:我是所述插件的作者。

+0

謝謝。這是一個很酷的插件。不幸的是,我的安全團隊的座右銘是,「讓我們變得偏執狂」。我必須檢查是否可以進行一些預處理。我還沒有時間來理解你的代碼呢。我也會檢查一下。 – Kay 2014-10-08 07:33:16

+0

這個插件是完全開源的,一切都在GitHub上。 – lexicore 2014-10-08 08:36:31