Использование jQuery для обработки объекта JSON - PullRequest
1 голос
/ 18 октября 2010

Мой объект JSON сконструирован так:

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

Мне удалось выяснить, как правильно добавить массив «Объект», но я не могу понять синтаксис 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 ]

7 голосов
/ 18 октября 2010

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

И это тоже быстрее!Хорошие вещи.

5 голосов
/ 18 октября 2010

Источник - это объект JSON, а не HTML DOM.Поэтому вы должны использовать функции утилит jQuery для массивов:

$.grep( Source.Object, function(e) { return e.Category == category } ).each(...)
1 голос
/ 18 октября 2010

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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...