У меня есть потенциально ОЧЕНЬ большой json-объект (который я не контролирую), я пытаюсь вывести список записей json (в данном случае это люди) - и я начал использовать Mustache.js, но структура этот конкретный объект JSON заставляет меня приспосабливаться.
Я начал путь разбора сложного объекта (много деталей о каждом человеке) в более простой объект (просто данные людей, которые мне действительно нужны) - кажется, я на самом деле это сделал, но все еще имею проблемы с Усами, и я больше, чем немного обеспокоенный эффективностью.
Итак, на вопрос - учитывая объект JSON, например
var data = {"totalrows":3,"autoinc":4,"rows":{
"1":[{"name":"agent","value":"Bill Summers"},{"name":"firstname","value":"Mike"{"name":"lastname","value":"Goldberg"},{"name":"companyname","value":"Vandelay Industries"},{"name":"department","value":"Import Export"}],
"2":[{"name":"agent","value":"Mark Jacobs"},{"name":"firstname","value":"John"},{"name":"lastname","value":"Stewart"},{"name":"companyname","value":"Vandelay Industries"},{"name":"department","value":"Sales"},],
"3":[{"name":"agent","value":"Heidi Floss"},{"name":"firstname","value":"Stuart"},{"name":"lastname","value":"Manning"},{"name":"companyname","value":"Vandelay Industries"},{"name":"department","value":"Accounts"}]
}
}
Здесь пример подхода, который я принимал - снова - нужны фактические результаты, и некоторые советы относительно передового опыта с такими вещами
Здесь, где я споткнулся jsFiddle
Как бы вы выводили список, например
ТИА
При работе с большим объектом, как это, вы можете рассмотреть пейджинг. Вы, конечно, не хотите перебирать весь ряд строк.
Другими словами, чтобы получить определенный набор строк для отображения, сделайте следующее:
var data = yourData; //your JSON
resultsPerPage = 20;
currentPage = 2; // for example (starts from 1)
start = 1 + (currentPage*resultsPerPage) - resultsPerPage;
end = currentPage * resultsPerPage;
resultsToDisplay = [];
for(i=start; i<=end; i++){
resultsToDisplay.push(data.rows[i]);
}
Это может быть не полный ответ, но он может быть вам полезен, так как разбиение на страницы при отображении результатов с большого объекта является обязательным.
После этого вы можете вывести данные из полученного набора, например, добавив их в DIV.
resultsToDisplay.each(function(result){
output = result.get('firstname') + " " + result.get('lastname') + ": " + result.get('department') + ", " + result.get('companyname') + "<br/>";
$('#yourOutputDiv').html().append(output);
});