[英]problem parsing JSON Strings
var records = JSON.parse(JsonString);
for(var x=0;x<records.result.length;x++)
{
var record = records.result[x];
ht_text+="<b><p>"+(x+1)+" "
+record.EMPID+" "
+record.LOCNAME+" "
+record.DEPTNAME+" "
+record.CUSTNAME
+"<br/><br/><div class='slide'>"
+record.REPORT
+"</div></p></b><br/>";
}
當 JsonString 包含實體數組但對於單個實體失敗時,上述代碼工作正常。 結果未標識為數組! 它出什么問題了?
結果不是數組。 你在你的 JSON 中看到任何方括號嗎? 你不可以。 它不包含任何數組。
{
"result": {
"ID": "30",
"EMPID": "1210308550",
"CUSTID": "1003",
"STATUS": "2",
"DATEREPORTED": "1273234502",
"REPORT": "this is one more report!",
"NAME": "Sandeep Savarla",
"CUSTNAME": "Collateral",
"LOCID": "4",
"LOCNAME": "Vijayawada",
"DEPTNAME": "SALES"
}
}
當上面的函數工作時,你能告訴我你的“有效”json是什么樣的嗎?
在迭代之前確保它是一個數組
if ( 'undefined' == typeof records.result.length )
{
records.result = [records.result];
}
您的代碼就像一個數組一樣循環遍歷records.result
。
由於它不是數組,因此您的代碼不起作用。
這個最簡單的解決方案是將其強制為一個數組,如下所示:
var array = 'length' in records.result ? records.result : [ records.result ];
for(var x = 0; x < array.length; x++) {
var record = array[x];
...
在您的代碼result
是一個對象,而不是一個數組。 將它的值括在方括號中以使其成為數組:
{
"result": [{
"ID": "30",
"EMPID": "1210308550",
"CUSTID": "1003",
"STATUS": "2",
"DATEREPORTED": "1273234502",
"REPORT": "this is one more report!",
"NAME": "Sandeep Savarla",
"CUSTNAME": "Collateral",
"LOCID": "4",
"LOCNAME": "Vijayawada",
"DEPTNAME": "SALES"
}]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.