2014-10-07 98 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