【问题标题】:json.org xml generator creates incorrect array outputjson.org xml 生成器创建不正确的数组输出
【发布时间】:2013-12-13 17:55:21
【问题描述】:

我正在使用 json.org XML.toString() 方法从 JSON 数据创建 XML。这个方法接受一个 JSONObject 参数并创建一个等效的 XML 结构,但是当涉及到一个数组时,我得到了我不期望的结果。

这段代码说明了问题:

String jsonString = "{ \"group\" : [ { \"a\" : { } }, {\"a\" : { } } ] }";
System.out.println(XML.toString(new JSONObject(jsonString)));

产生:

<group><a></a></group><group><a></a></group>

而我期待:

<group><a></a><a></a></group>

也就是说,我期望一个“组”元素,而不是每个元素“a”一个。

我使用在线验证器来检查 JSON 是否有效。我是误会了什么,做错了什么,还是这是一个错误?

【问题讨论】:

  • Duh...我最初错过了重要的代码行 (XML.toString) - 也许现在这个问题是有道理的!

标签: java xml arrays json


【解决方案1】:

这不是您所期望的,因为数组中名为"group" 的对象可能包含除"a" 之外的其他值。例如,如果 JSON 是

{ "group" : [ { "a" : { }, "b" : { } }, {"a" : { }, "b" : { } } ] }

你的计划会产生

<group><a></a><b></b><a></a><b></b></group>

"a""b" 两对之间没有任何分隔。

【讨论】:

  • 嗯,没错,但我的期望是基于我的例子,而不是你的。无论如何,问题是为什么 XML 有多个组。我本可以更清楚地说明这一点。
  • 规则必须适用于所有种情况。我向您展示了您选择的一个简单示例如何掩盖了一个出现在更复杂示例中的问题。就像你问为什么所有的蔬菜都是酸的;我说“不,他们不是,胡萝卜很甜”,然后你抱怨,因为你想的实际上是大黄,我怎么敢提起胡萝卜。 XML 有不止一组,因为这是 XML 通常处理数组的方式:通过重复相同类型的元素。
  • 谢谢 - 你当然是对的。我只是没有考虑你的答案。我的想法很模糊,因为在我使用 JSON 时,我总是使用同构数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 2016-05-16
  • 2019-06-13
  • 2023-01-20
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多