2017-05-19 180 views
-1

我正在用這個拉我的頭髮。從子窗口獲得JSON.stringify後,在父窗口中有這個str變量。這組數組是一組輸入。JSON陣列對象

var str = {"SHOP1":"\"[[\\\"name1\\\",1,\\\"anotherdata1\\\"],[\\\"name2\\\",2,\\\"anotherdata2\\\"]]\"", 
"SHOP2":"\"[[\\\"name1\\\",1,\\\"anotherdata1\\\"],[\\\"name2\\\",2,\\\"anotherdata2\\\"]]\""}; 

我所做的是

for(var i in str) { 
console.log(i); 
console.log(JSON.parse(str[i])); 
} 

//the output example: 
SHOP1 
[["name1",1,"anotherdata1"],["name2",2,"anotherdata2"]] 

但它永遠不會檢測[["name1",1,"anotherdata1"],["name2",2,"anotherdata2"]]爲數組,但卻爲字符串。

有沒有什麼辦法讓JavaScript來檢測它作爲一個數組?還是有更好的建議或替代呢?

+3

世界上沒有編曲......並請格式化你的代碼... –

+0

@Jonasw感謝您指出。忽略了str – Qin

+0

你想從str和str得到什麼也是無效的 – siva

回答

0

訣竅是解析它兩次。首先獲取字符串,然後將其轉換爲數組。

var obj = {"SHOP1":"\"[[\\\"name1\\\",1,\\\"anotherdata1\\\"],[\\\"name2\\\",2,\\\"anotherdata2\\\"]]\"", 
 
"SHOP2":"\"[[\\\"name1\\\",1,\\\"anotherdata1\\\"],[\\\"name2\\\",2,\\\"anotherdata2\\\"]]\""}; 
 

 
for (var shopname in obj) { 
 
    var shop = obj[shopname]; 
 
    shop = JSON.parse(JSON.parse(shop)); 
 
    console.log(shop); 
 
    console.log(shop.length); 
 
}

+1

'unescape'在這裏沒有做任何事情。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape –

+0

謝謝@FelixKling – nixkuroi

+0

即將問爲什麼我們需要'unescape'。我不知道我已經'stringify'兩次了,謝謝@ nixkuroi! – Qin