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 
     }, 
    ] 
}