我正在尝试将xml转换为json使用jackson-2.5.1
和jackson-dataformat-xml-2.5.1
从Web服务器接收xml结构并且未知,因此我不能让java类来表示对象,而我正在尝试直接转换为TreeNode
使用ObjectMapper.readTree
.
我的问题是杰克逊无法解析列表.它只需要列表的最后一项.
码:
String xml = "<root><name>john</name><list><item>val1</item>val2<item>val3</item></list></root>";
XmlMapper xmlMapper = new XmlMapper();
JsonNode jsonResult = xmlMapper.readTree(xml);
Run Code Online (Sandbox Code Playgroud)
json结果:
{"name":"john","list":{"item":"val3"}}
Run Code Online (Sandbox Code Playgroud)
如果我在重复键上启用失败xmlMapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY)
,则抛出异常:
com.fasterxml.jackson.databind.JsonMappingException: Duplicate field 'item' for ObjectNode: not allowed when FAIL_ON_READING_DUP_TREE_KEY enabled
是否有任何功能可以解决这个问题?有没有办法让我编写自定义反序列化器,如果重复键将它们转换为数组?