Jackson XML全局设置容器类型的元素名称

时间:2012-10-15 21:24:01

标签: java xml xml-serialization jackson

我正在使用Jackson 1.9.2和XML dataformat module。我需要调整Jackson序列化数组,列表和集合的方式。

默认情况下,使用名为myProperty的int数组属性包含几个数字,Jackson / XML正在生成以下内容:

<myProperty>
  <myProperty>1</myProperty>
  <myProperty>2</myProperty>
</myProperty>

我需要制作的是:

<myProperty>
  <item>1</item>
  <item>2</item>
</myProperty>

我可以使用JacksonXmlElementWrapperJacksonXmlProperty的组合在每个POJO的基础上执行此操作,如下所示:

@JacksonXmlElementWrapper(localname='myProperty')
@JacksonXmlProperty(localname='item')
public int[] myProperty;

但是,此解决方案需要我手动将这些注释应用于我的POJO中的每个数组,列表和集合。一个更好的解决方案将允许我在全局范围内为所有阵列,列表,集合类型应用一次解决方案。关于如何实施这样的解决方案的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用XML模块提供的子类AnnotationIntrospector,并覆盖检查@JacksonXmlElementWrapper的方法,并使其返回您想要的任何包装名称。

答案 1 :(得分:0)

我最终创建了自己的JsonGenerator来为我的小组需要支持的旧格式生成XML。

我本来希望使用Jackson XML数据格式模块,它提供更多安全性,更多测试,并且可能更快。不幸的是,我无法使用StaxMan的建议找到解决方案。