使用jQuery处理JSON对象

C B*_*uer 1 javascript ajax jquery json data-structures

我的JSON对象构造如下:

var Source =
{
    Object: [ //Array
        {Title: 'Test', Type: 'Pet', Category: 'Cat', Description: 'Fluffy', Count: 2 }
    ]
};
Run Code Online (Sandbox Code Playgroud)

我能够弄清楚如何正确添加到'对象'数组,但我似乎无法找出基于属性列表(标题,类型,类别等)查询对象的jQuery语法.

我将一些测试代码放入click事件中,并通常检查Source.Object的长度(测试数据导致2个对象)以确认是否有数据可以使用(它通过ajax调用填充).

function clickTest(category, type) {
    $(Source).find('Object[Category=\"' + category + '\"]').each(function() {
        alert($(this).attr('Category')); //doesn't work
    });
}
Run Code Online (Sandbox Code Playgroud)

查询这样的JSON对象的正确方法是什么?

Ale*_*hev 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);
}
Run Code Online (Sandbox Code Playgroud)

那也更快!好东西.


Aar*_*lla 5

源是JSON对象,而不是HTML DOM.因此,您必须对数组使用jQuery实用程序函数:

$.grep( Source.Object, function(e) { return e.Category == category } ).each(...)
Run Code Online (Sandbox Code Playgroud)

  • "必须"听起来相当极端,不是吗?:) (3认同)