由於我正在進行的AJAX調用,我無法訪問作爲JSON從服務器端腳本接收的對象中的某些屬性。根據對象本身的數據,我的JSON數據可以有兩種形式。JavaScript對象迭代
表1:
"MY_OBJ" : { "FILE" : "myfile.txt",
"PARAMS" : { "PARAM" : { "KEY" : "mykey",
"VALUE" : "myvalue"
} }
}
表2:
"MY_OBJ" : { "FILE" : "myfile.txt",
"PARAMS" : { "PARAM" : [ { "KEY" : "mykeyone",
"VALUE" : "myvalueone"
},
{ "KEY" : "mykeytwo",
"VALUE" : "myvaluetwo"
}
] }
}
這是我當前如何試圖解析的數據在瀏覽器中顯示:
function(v) {
var myFormattedData = v.FILE;
if (v.PARAMS !== undefined && v.PARAMS.PARAM !== undefined && v.PARAMS.PARAM.KEY !== undefined && v.PARAMS.PARAM.VALUE !== undefined) {
myFormattedData += '<br />' + v.PARAMS.PARAM.KEY + ' : ' + v.PARAMS.PARAM.VALUE;
} }
這種方法當我的數據在表單1中工作正常。在這種情況下,我將在瀏覽器中得到輸出,如...
myfile.txt
mykey : myvalue
......這正是我想要的。
然而,當數據在表格2我得到的是這樣的瀏覽器中顯示的文件名...
myfile.txt
...但我想獲得的東西等等。 ..
myfile.txt
mykeyone : myvalueone
mykeytwo : myvaluetwo
我需要能夠處理獲取這兩種形式的數據。更糟糕的是,我可能還應該計劃在未來的某個時間點接收超過一個或兩個鍵值對的可能性。我一直在爲此奮鬥很長一段時間。任何幫助深表感謝!
謝謝!
我收到了很好的答案!我以各種形式嘗試了其中的幾種。我決定採取什麼措施,以及現在對我最好的工作,以及讓我爲未來的其他鍵值對做準備,是檢查Object.prototype.toString.call(v.PARAMS.PARAM) ===基於@Felix Kling評論的「[object Array]」。當它返回true時,我運行你的(Anthony Accioly)循環。當它返回false時,我只運行myFormattedData + ='
'+ v.PARAMS.PARAM.KEY +':'+ v.PARAMS.PARAM.VALUE;'。謝謝! – bgw 2011-04-27 18:39:35