проблема разбора строк JSON - PullRequest
0 голосов
/ 07 мая 2010
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

Ответы [ 4 ]

1 голос
/ 07 мая 2010

Просто убедитесь, что это массив, прежде чем выполнять итерацию

if ( 'undefined' == typeof records.result.length )
{
  records.result = [records.result];
}
1 голос
/ 07 мая 2010

результат не является массивом . Видите ли вы квадратные скобки в вашем 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, когда работает вышеуказанная функция?

0 голосов
/ 07 мая 2010

В вашем коде 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"}]}
0 голосов
/ 07 мая 2010

Ваш код просматривает records.result, как если бы это был массив.
Поскольку это не массив, ваш код не работает.

Это самое простое решение состоит в том, чтобы заставить его в массив, как это:

var array = 'length' in records.result ? records.result : [ records.result ];

for(var x = 0; x < array.length; x++) {
    var record = array[x];
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...