2016-11-09 45 views
-1

我已经从XML文档中提取了一些数据并将它们分配到了三个变量中。根元素名称,包含根子项的所有名称的数组,以及包含子子节点长度的第二个数组。我想这些变量转换成JSON对象以这种方式:将字符串和数组合并到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 
} 

你知道如何解决它?

+1

我不认为你可以在对象的相同父属性有冗余键 - 有没有办法可以给他们一个唯一的键值? – SachiDangalla

+1

我们将需要知道*如何*你想要这个“固定”。正如SachiDangalla所说,你不能有重复的密钥。你想用额外的数据做什么?一种可能性是创建一个包含值的数组。但是,**你需要弄清楚你想要什么并告诉我们。 – Makyen

+0

你的意思是“Javascript对象”而不是JSON? JSON是一个具有特定形式的字符串,但它仍然是一个字符串,不像您所描述的那样是一个复杂对象... –

回答

1

您不能在同一父母下拥有多个同名的密钥。另外,xml中的节点有一个订单,它在一个js地图下丢失。所以,如果你想要一个XML到JSON实用程序,你需要创建一个JSON模式。这里是一个简单的例子:

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