使用jQuery处理JSON对象

时间:2010-10-18 13:19:47

标签: javascript jquery ajax json data-structures

我的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对象的正确方法是什么?

3 个答案:

答案 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
        }
    }
}