这是交易:我有一个包含数组的JSon对象,但不幸的是,我必须遍历一个JSon对象的列表,然后迭代我之前调过的那个数组。 JSon对象看起来如下(它是葡萄牙语,但你们可以理解它):
{“produtos”:[{“Key”:“DERIVADOS DE FERRO”,“Value”:217816909},{“Key”:“MADEIRAS, SUAS MANUFATURASEMOBILIÁRIOMÉDICO CIRÚRGICO “ ”值“:117812290},{ ”关键“:” Celulose的, PAPEL E SUAS OBRAS “ ”值“:100086937},{ ”关键“:” CARNE SUÍNA “ ”值“:81738783},{ ”关键“:” CARNE BOVINA“,”“Value”:74894768},{“Key”:“CARNE DE AVES”, “值”:65292433},{ “密钥”: “因特网客户停车其他”, “值”:444520811}], “ANO”:2005, “TIPO”:1}
Produtos是我提到的数组,我有两个重要的值:ano(year)和tipo(type)。我的代码如下:
jQuery.getJSON("/webportos/Porto/GraficoComercio?id=" + iddoporto.className + "&ano=2005", null, function (items) {
jQuery.each(items, function (itemNo, item) {
jQuery.each(item.produtos, function (dicNo, dic) {
options.series.push({ name: dic.Key, data: dic.Value});
options.title.text = "Comércio - "+item.ano;
options.yAxis.title.text = "Exportação";
options.tooltip.formatter = function () {
return '<b><u>' + this.series.name + '</u></b><br/><b>' + this.x + '</b>: ' + this.y + ' ';
}
});
});
chart = new Highcharts.Chart(options);
});
这段代码使Chrome javascript控制台显示:
ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:32 Uncaught TypeError: Cannot read property 'length' of undefined
你们可以帮助我吗?
答案 0 :(得分:2)
您不需要jQuery来迭代JSON数据。使用普通的旧Javascript。
请参阅此问题:Display JSON/YAML hierarchy as a tree in HTML?
function renderJSON(obj) {
var keys = []
var retValue = ""
for (var key in obj) {
if(typeof obj[key] == 'object') {
retValue += "<div class='tree'>" + key
retValue += renderJSON(obj[key])
retValue += "</div>"
}
else {
retValue += "<div class='tree'>" + key + " = " + obj[key] + "</div>"
}
keys.push(key)
}
return retValue
}
答案 1 :(得分:2)
这是因为你试图在非数组上使用.each()吗?
jQuery.each(items, function (itemNo, item) {
根据我的理解,jQuery.each(object,callback,args)仅用于数组。它做的第一件事就是调用object.length。所以,除非你有
[ {“produtos”:[{“Key”:“DERIVADOS DE FERRO”,“Value”:217816909},{“Key”:“MADEIRAS,SUAS MANUFATURASEMOBILIÁRIOMÉDICOCORÚRGICO“,”Value“:117812290},{”Key“:”CELULOSE,PAPEL E SUAS OBRAS“,”Value“:100086937},{”Key“:”CARELSUÍNA“,”Value“:81738783},{”Key“:”CARNE BOVINA“,”Value“:74894768},{”Key“:”CARNE DE AVES“,”Value“:65292433}, { “密钥”: “因特网客户停车其他”, “值”:444520811}], “ANO”:2005, “TIPO”:1}的 强>
你会得到那个错误。
此外,您可以考虑Diodeus的建议。 jQuery.each的性能远不如使用for循环数据。