簡體   English   中英

解析 JSON 字符串的問題

[英]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 包含實體數組但對於單個實體失敗時,上述代碼工作正常。 結果未標識為數組! 它出什么問題了?

http://pastebin.com/hgyWw5hd

結果不是數組 你在你的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM