我一直在使用Jackson来将Object转换为XML,但是现在的要求是仅将ArrayList变量从对象转换为XML。当我将ArrayList包装到对象中然后转换对象时,它工作正常,但是当我只想将列表转换为XML时。我无法在XML中获得所需的根元素和项目名称。
ObjectMapper objectMapper = new XmlMapper();
JacksonXmlModule xmlModule = new JacksonXmlModule();
xmlModule.setDefaultUseWrapper(false);
ObjectMapper objectMapper = new XmlMapper(xmlModule);
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
String xml = objectMapper.writeValueAsString(input);
我要转换的变量:
@JacksonXmlElementWrapper(localName = "user")
List<USER> userList = new ArrayList<>();
我现在得到的输出格式
<ArrayList>
<item></item>
<item></item>
<item></item>
</ArrayList>
所需的O / P
<ArrayList>
<user></user>
<user></user>
<user></user>
</ArrayList>
答案 0 :(得分:0)
对于重新映射元素,请使用@JacksonXmlProperty
,然后对于包装整个列表,请使用@JacksonXmlElementWrapper
。
通过@JacksonXmlProperty
映射列表元素:
@JacksonXmlProperty(localName = "user")
List<String> userList = new ArrayList<>();
会产生:
...
<user>...</user>
<user>...</user>
<user>...</user>
...
通过@JacksonXmlElementWrapper
包装列表:
@JacksonXmlProperty(localName = "user")
@JacksonXmlElementWrapper(localName = "ArrayList")
List<String> userList = new ArrayList<>();
会产生:
...
<ArrayList>
<user>...</user>
<user>...</user>
<user>...</user>
</ArrayList>
...