Какие библиотеки доступны для манипулирования данными JSON в JavaScript - PullRequest
2 голосов
/ 03 апреля 2011

У меня есть веб-страница, использующая JavaScript для извлечения JSON из веб-службы.JSON может содержать 10 записей или 100 записей.На веб-странице я хочу предоставить гибкий интерфейс, который позволил бы пользователю фильтровать и упорядочивать данные.Данные фильтрации / заказа должны быть обработаны в браузере.Я не хочу, чтобы веб-служба выполняла фильтрацию, потому что для каждого действия потребовалась бы обратная поездка на сервер, и это кажется очень неэффективным.

У меня есть опыт работы с JQuery, но решение не должно зависеть от JQuery.

Многие опции, которые мне нравятся, относятся к LINQ в JavaScript.Ниже приведен список библиотек JavaScript, основанных на LINQ;Я также добавил дату последнего обновления библиотеки.Существует ли какой-то стандарт, который используется в отрасли?

В зависимости от того, какая библиотека выбрана,требуется поддержка кросс-браузера.

Я не требую, чтобы библиотека была совместима с JQuery или требовала, чтобы она использовала синтаксис LINQ.Но мне нравится JQuery и гибкость, которую обеспечивает LINQ.

Ответы [ 2 ]

4 голосов
/ 03 апреля 2011

Важным моментом является то, что данные JSON являются просто объектом JavaScript, поэтому вы можете использовать любую библиотеку, которая позволяет вам манипулировать объектами.

Я бы порекомендовал underscore.js в качестве общего пояса для решения подобных проблем.

Таким образом, мы можем легко манипулировать данными

var jsonData = $.getJSON(url);

var filtered = _.filter(jsonData, function(val, key) {
    if (val > 10) return true;
});

var sorted = _.sortBy(jsonData, function(val, key) {
    return order(val);
});

Фильтрация и упорядочение зависит от вашей модели данных.Я рекомендую вам использовать какую-нибудь оболочку для представления вашей модели данных на клиенте.

var MyModel = function(json) {
    var data = json;

    this.filterBySize = function(size) {
        data = _.filter(data, function(val) {
            return val > size
        });
    };

    ...
}

var model = new MyModel(json);
model.filterBySize(10);

Альтернативой является использование большой библиотеки, такой как backbone.js и создание Backbone.Modelдля вашей записи и Backbone.Collection для всего вашего набора данных.Тогда вы можете просто позвонить .sort, .sortBy, .filter в свою Коллекцию.

Если вы собираетесь вывести магистраль, тогда вы переходите к MVC на стороне клиента, и вы можете использовать весь набор инструментов для подключения ваших данных.и ваш пользовательский интерфейс вместе приятно.Просто перезапишите Backbone.sync с вашим собственным сервером связи.

0 голосов
/ 08 ноября 2015

Проверьте эту библиотеку linq, только что опубликованную вчера, и она очень мощная

https://github.com/iabdelkareem/LINQ-To-JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...