【问题标题】:problem parsing JSON Strings解析 JSON 字符串的问题
【发布时间】:2010-05-07 16:33:01
【问题描述】:
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

【问题讨论】:

    标签: javascript mysql json


    【解决方案1】:

    结果不是数组。您在 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是什么样的吗?

    【讨论】:

    • 它适用于此,因为 一个数组。如果不是数组,则不能循环遍历它。
    【解决方案2】:

    在迭代之前确保它是一个数组

    if ( 'undefined' == typeof records.result.length )
    {
      records.result = [records.result];
    }
    

    【讨论】:

      【解决方案3】:

      您的代码正在循环遍历records.result,就像它是一个数组一样。
      由于它不是数组,因此您的代码不起作用。

      这个最简单的解决办法是把它强制成一个数组,像这样:

      var array = 'length' in records.result ? records.result : [ records.result ];
      
      for(var x = 0; x < array.length; x++) {
          var record = array[x];
          ...
      

      【讨论】:

        【解决方案4】:

        在您的代码中,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"
          }]
        }
        

        【讨论】:

          猜你喜欢
          • 2013-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多