доступ к данным JSON - PullRequest
       4

доступ к данным JSON

0 голосов
/ 29 июля 2010

Я использую этот массив (как пример)
http://pastebin.com/M0ZJgAVs

Я использую json_encode () и извлекаю его, используя javascript

кто-нибудь хочет мне сказать

чтобы получить число строк, я бы просто использовал

var numrows = json['numrows'];

и зацикливание на каждом ряду я бы использовал

for(row in json['rows']) {
}

и затем внутри этого, чтобы добраться до каждой точки данных, я бы просто использовал

for(data in row) {

}

или я совершенно не в курсе?

Ответы [ 3 ]

0 голосов
/ 29 июля 2010
for(row in json['rows']) {
  for(entry in json['rows'][row]) {
     document.write(json['rows'][row][entry]);
  }
}
0 голосов
/ 29 июля 2010

Если вы получите десериализованные данные JSON в JavaScript в виде объекта json, то код может выглядеть следующим образом

var rows = json.rows; // cache json.rows array in a variable for better performance
for (var iRow=0, cRows = rows.length; iRow<cRows; iRow++) {
    var row = rows[iRow];
    for (var iData=0, cData = row.length; iData<cData; iData++) {
        var data = row[iData];
        // do something with the data like
        // alert(data);
    }
}

Обычно вы получаете данные JSON в десериализованной форме в виде объекта (например, если вы используете jQuery.ajax). Таким образом, доступ к данным в JavaScript очень прост. Это просто доступ к полям объекта или доступ к элементам массива. Только в целях производительности лучше всегда использовать индексированный цикл как цикл "for in" (см. http://www.jslint.com/lint.html#forin).. Если вы обращаетесь к свойству объекта (например, к свойству rows), всегда лучше использовать пунктир нотация (json.rows) как индексная нотация (json[rows]). И последняя рекомендация - всегда кэшировать значение свойства в локальной переменной (например, var row=rows[iRow] или var cRows = rows.length) всегда, если вы обращаетесь к свойству более одного раза.

Вы можете найти интересную информацию в http://jquery -howto.blogspot.com / 2009/06 / javascript-for-loop-vs-jquery-each.html о более эффективном способе перечисления данных в массиве (см. также последнюю версию предложенного цикла в комментарии).

Также полезно проверить код JavaScript в JSLint (см. http://www.jslint.com/).

0 голосов
/ 29 июля 2010

Да, вы в правильной точке.

for(row in json['rows']) {
  for(data in row) {
     document.write(data);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...