Subsetting JSON and Mustache



我有一个潜在的非常大的json对象(我无法控制它),我试图输出json记录的列表(在这种情况下是人)-我开始使用Mustache.js-但这个特定json对象的结构让我感到不适。

我开始将复杂的对象(每个人的许多细节)解析为一个更简单的对象(只是我实际需要的人的细节)——看起来,我确实做到了,但仍然存在Mustache问题,我非常关心效率。

那么问题来了——给定一个类似的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 的地方

你将如何输出像这样的列表

  • Mike Goldberg:范德莱工业进出口
  • John Stewart:销售,Vandelay Industries
  • 斯图尔特·曼宁:会计,范德莱工业

TIA

在这样处理大型对象时,您可能需要考虑分页。你当然不想看一整排。

换句话说,要获得一组特定的行进行显示,请执行以下操作:

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);
});

最新更新