使用Jackson来从XML创建JSON数组-只有最后一个元素才能实现

时间:2018-08-01 19:54:49

标签: jackson jackson-databind

我有一个简单的测试用例XML文档,其父文档包含一个包含两个子元素的列表。我正在尝试使用Jackson XmlMapper解析此文档,但是无法产生预期的结果,该结果是带有两个子元素的JSON数组。

这是测试代码:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class Test
{
    public static void main(String[] args) throws Exception
    {
        String xml =
            "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
            "  <parent name=\"P1\">" +
            "    <children>" +
            "      <child name=\"C1\"/>" +
            "      <child name=\"C2\"/>" +
            "    </children>" +
            "  </parent>" +
            "  </xml>";

        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.setDefaultUseWrapper(true);

        JsonNode node = xmlMapper.readTree(xml.getBytes());
        System.out.println(node);
    }
}

运行时输出为:

{"name":"P1","children":{"child":{"name":"C2"}}}

不是预期的:

{"name": "P1", "children": [{"child": {"name": "C1"}},{"child": {"name": "C2"}}]}

{"name": "P1", "children": [{"name": "C1"},{"name": "C2"}]}

使用XmlMapper是否可以实现?如果没有,杰克逊还有其他方法可以解决吗?

0 个答案:

没有答案