Javascript JSON библиотека данных - PullRequest
8 голосов
/ 16 марта 2012

В настоящее время я работаю над проектом, в котором я имею дело с достаточным количеством данных JSON, которые передаются вперед и назад и сохраняются браузером в виде списков объектов javascript. Например:

person: {
   // Primary Key
   key: "id",
   // The actual records
   table: {
       "1": {id: 1, name: "John", surname: "Smith", age: 26},
       "2": {id: 2, name: "Mary", surname: "Brown", age: 19},
       // etc..
   },
   indexes: {
       // Arrays of pointers to records defined above
       "name": [
            {id: 89, name: "Aaron", surname: "Jones", age: 42},
            // etc..
       ]
   }

Я обнаружил, что кодирую все виды алгоритмов индексации и сортировки, чтобы эффективно манипулировать этими данными, и начинаю думать, что такого рода вещи должны были быть сделаны раньше.

У меня есть опыт использования объектов Ext.data.Store и Ext.data.Record для выполнения такого рода манипуляций с данными, но я думаю, что они слишком сложны для младших Разработчики и проект, над которым я работаю, это небольшое мобильное приложение, в котором мы не можем позволить себе добавить библиотеку 300K + просто ради этого, поэтому мне нужно что-то действительно минимальное.

Любые идеи, если есть среда манипулирования JSON Javascript, которая имеет следующее:

  1. Может хранить ,
  2. 1020 * получать *,
  3. 1024 * рода *,
  4. и перебирают данные JSON,
  5. с чистым API ,
  6. минимальное перетаскивание производительности (мобильные телефоны не обладают большой вычислительной мощностью)
  7. и небольшая полезная нагрузка, в идеале <10K? </strong>

Я мог бы просить слишком много, но, надеюсь, кто-то использовал что-то вроде этого ... То, что я ищу, это JSON-эквивалент jQuery , возможно, это не так диковинно.

Ответы [ 3 ]

10 голосов
/ 17 ноября 2013

Взгляните на jsonQ

Он полностью удовлетворяет всем требованиям, указанным в вопросе.

  • Можно хранить,
  • 1010 * получать *
  • и перебирать данные JSON,

Предоставить обход (например, поиск, братья и сестры, родитель и т. Д.) И метод манипуляции, например (значение, добавление, предварительное добавление);

  • 1018 * рода *

Предоставляет метод прямой сортировки массива и метод сортировки, которые выполняются на объекте jsonQ. (Оба метода сортировки выполняются рекурсивно)

  • с чистым API

Пробная версия иметь тот же API для JSON, что и jQuery DOM API. Так что если вы знакомы с jquery. Его легко догнать. Более полная документация apis доступна.

  • минимальная производительность перетаскивания

Он создает новый формат при инициализации jsonQ для данных JSON, который используется для внутреннего просмотра данных, которые являются более эффективными. (Это все равно, что иметь все циклы одновременно, поэтому вам не нужно делать цикл по циклу, чтобы повторять каждый раз, когда json).

  • и небольшая полезная нагрузка, которая в идеале <10K? </li>

минимизированная версия - 11,7 КБ.

0 голосов
/ 16 марта 2012

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

Это простое хранилище значений ключей, хотя вы можете определять свои собственные индексы, что-то вродес CouchDB.Я не видел поддержки селекторов, однако есть плагин для запросов, обещающий простой выбор.

Что-то вроде jQuery опирается на sizzle, библиотеку селекторов CSS, которая не применима в вашем случае.XPath - это, на мой взгляд, ваш лучший выбор, поскольку он используется в основном с XML, древовидной структурой.Поскольку объект JSON может быть представлен в виде дерева, я обнаружил JSONSelect , небольшую библиотеку, которая поддерживает селекторы JSON Xpath способом 'CSS-ish'.

Если вы сможетекак-то подключить JSONSelect к Lawnchair, я думаю, вы нашли отличную комбинацию:)

0 голосов
/ 16 марта 2012

На самом деле ваш вопрос не очень хороший, я полагаю.Из вашего примера видно, что вы пытаетесь эмулировать хранилище в стиле SQL с помощью JSON.Может быть, вам просто нужно взять IndexedDB ?

jsonpath соответствует точкам 4-7 (и, возможно, 3) ваших точных требований и JSON глобальный объект допускает 1 и 2 с одним вызовом для каждого.

Также требования IMHO нереальны, особенно с последним размером.

...