【问题标题】:Combine strings and arrays into JSON properly将字符串和数组正确组合成 JSON
【发布时间】:2016-11-09 03:14:03
【问题描述】:

我从 XML 文档中提取了一些数据并将它们分配给三个变量。根元素名称,包含根的所有子节点名称的数组和具有这些子节点长度的第二个数组。我想以这种方式将这些变量转换为 JSON 对象:

{ "root_name": {
         "childName[0]": "lengthSubNodes[0]",
         "childName[1]": "lengthSubNodes[1]",
         "childName[2]": "lengthSubNodes[2]",
}  

使用此功能:

function XMLtoJSON(rootName,childNames,childNumbers){
            var xmlObject = {}
            xmlObject[rootName] = {}; 
            for(var i = 0; i < childNames.length; i++ ){
                xmlObject[rootName][childNames[i]] = childNumbers[i];
            }

        }

一切正常。然而,当涉及到具有许多具有相同名称和长度的根子节点的 XML 文档时,它们只会出现一次,如下所示:

{ "catalog": {
         "book": 6
}

应该是这样的:

{ "catalog": {
         "book":6,
         "book":6,
         "book":6
}  

你知道怎么解决吗?

【问题讨论】:

  • 我不认为你可以在对象的同一个父属性中有冗余键 - 有没有办法可以给它们一个唯一的键值?
  • 我们需要知道如何您希望这个“修复”。正如 SachiDangalla 所说,您不能拥有重复的密钥。你想用额外的数据做什么?一种可能性是使用这些值创建一个数组。但是,需要弄清楚您想要什么并告诉我们。
  • 您的意思是“Javascript 对象”而不是 JSON? JSON 是一个具有特定形式的字符串,但它仍然是一个字符串,而不是您描述的复杂对象......
  • 你的三本“书”应该是一个数组吧?

标签: javascript arrays json xml


【解决方案1】:

您不能在一个父项下拥有多个同名的键。另外,xml 中的节点有顺序,在 js 映射下会丢失。因此,如果您想要一个 xml 到 json 实用程序,您需要自己创建一个 json 模式。这是一个简单的例子:

{
    name:      "catalog",
    value:     null,
    children: [
        {
            name: "book",
            value: 6
        },
        {
            name: "book",
            value: 6
        },
        {
            name: "book",
            value: 6
        },
    ]
}

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多