在Java中将XML转换为JSON,子节点为数组

时间:2016-09-21 09:08:16

标签: java json xml

我正在寻找一种在Java中将XML转换为JSON的方法,使得子节点总是被转换为数组。 在Node.js中有库XmlToJs

用例是指我有如下XML:

XML:

<A>
  <B>
    <C>data</C>
  </B>
  <B>
    <C>data1</C>
    <C>data2</C>
  </B>
</A>

org.json转化的JSON:

{
  "A": {
      "B": [{
          "C": "data"
      }, {
          "C": ["data1", "data2"]
      }]
   }
}

我希望转换成产量:

{
  "A": {
      "B": [{
          "C": ["data"]
      }, {
          "C": ["data1", "data2"]
      }]
   }
}

3 个答案:

答案 0 :(得分:1)

您可以尝试使用underscore-java库和静态方法U.xmlToJson(xml)。有一个特殊的属性array="true"强制元素为数组。我是该项目的维护者。

<A>
  <B>
    <C array="true">data</C>
  </B>
  <B>
    <C>data1</C>
    <C>data2</C>
  </B>
</A>

输出:

{
  "A": {
    "B": [
      {
        "C": [
          "data"
        ]
      },
      {
        "C": [
          "data1",
          "data2"
        ]
      }
    ]
  },
  "#omit-xml-declaration": "yes"
}

答案 1 :(得分:0)

以上可以完成,但可能不直接,即XML - &gt; JSON,一种方法是拥有数据模型的中间对象表示,然后是XML - &gt;数据模型 - &gt; JSON。 XML-&gt;数据模型可以通过所需结构中的JAXB提供程序实现,一旦数据在模型中,您可以将其序列化为JSON

答案 2 :(得分:0)

您可以使用Jackson XML执行此操作。这是一篇博文,解释了该做什么https://dzone.com/articles/solving-the-xml-problem-with-jackson