相关疑难解决方法(0)

jackson xml列出反序列化被识别为重复键

我正在尝试将xml转换为json使用jackson-2.5.1jackson-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

是否有任何功能可以解决这个问题?有没有办法让我编写自定义反序列化器,如果重复键将它们转换为数组?

java xml json list jackson

5
推荐指数
1
解决办法
1405
查看次数

标签 统计

jackson ×1

java ×1

json ×1

list ×1

xml ×1