我的JSON对象构造如下:
var Source =
{
Object: [ //Array
{Title: 'Test', Type: 'Pet', Category: 'Cat', Description: 'Fluffy', Count: 2 }
]
};
我能够弄清楚如何正确添加到'Object'数组,但我似乎无法找出基于属性列表(Title,Type,Category等)查询对象的jQuery语法。
我将一些测试代码放入click事件中,并且通常检查Source.Object的长度(测试数据导致2个对象)以确认是否有数据可以使用(它通过ajax调用填充)。
function clickTest(category, type) {
$(Source).find('Object[Category=\"' + category + '\"]').each(function() {
alert($(this).attr('Category')); //doesn't work
});
}
查询像这样的JSON对象的正确方法是什么?
答案 0 :(得分:7)
JSON是JavaScript的原生,可以在不使用库(jQuery)的情况下循环使用。 []
表示数组,{}
表示对象,因此:
var obj = Source.Object;
for (var i = 0, len = obj.length; i < len; i++) {
if (obj[i].Category == category)
alert(obj[i].Category + ' ' + obj[i].Title);
}
而且这也更快!好东西。
答案 1 :(得分:5)
源是JSON对象,而不是HTML DOM。因此,您必须对数组使用jQuery实用程序函数:
$.grep( Source.Object, function(e) { return e.Category == category } ).each(...)
答案 2 :(得分:1)
JSon是一种以字符串格式转录javascript对象并在线路上传输它的方法。关于格式的一个好处是它可以通过javascript直接读取,因此您的Source对象已经可以处理了。
function processSource(source, category)
{
var counter = 0;
for (counter = 0; counter < source.Object.length; counter += 1)
{
if (category === source.Object[counter].category) {
// do something
}
}
}