代码之家  ›  专栏  ›  技术社区  ›  C Bauer

使用jQuery处理JSON对象

  •  1
  • C Bauer  · 技术社区  · 14 年前

    我的JSON对象是这样构造的:

    var Source =
    {
        Object: [ //Array
            {Title: 'Test', Type: 'Pet', Category: 'Cat', Description: 'Fluffy', Count: 2 }
        ]
    };
    

    我能够找出如何正确地添加到“Object”数组中,但似乎无法找出基于属性列表(Title、Type、Category等)查询对象的jQuery语法。

    我在click事件中输入了一些测试代码,通常检查Source.Object的长度(测试数据生成两个对象),以确认有数据可以使用(它是通过ajax调用填充的)。

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

    3 回复  |  直到 14 年前
        1
  •  7
  •   Alex Gyoshev    14 年前

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

    而且速度也更快!好东西。

        2
  •  5
  •   Aaron Digulla    14 年前

    $.grep( Source.Object, function(e) { return e.Category == category } ).each(...)
    
        3
  •  1
  •   samy    14 年前

    JSon是一种以字符串格式转录javascript对象并在线传输它的方法。该格式的一个优点是它可以被javascript直接读取,因此您的源对象已经准备好处理了。

    function processSource(source, category)
    {
        var counter = 0;
        for (counter = 0; counter < source.Object.length; counter += 1)
        {
            if (category === source.Object[counter].category) {
               // do something
            }
        }
    }