2012-03-16 3 views
7

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

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 +, добавленная только ради нее, поэтому мне нужно что-то действительно минимальное.

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

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

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

ответ

10

Посмотрите на jsonQ

Это FULLFILL все требования указывали на вопрос.

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

Обеспечение перемещения (как найти, братьев и сестер, родителей и т.д.) и способ манипуляции, как (значение, добавлять перед именем) ;

  • рода

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

  • с чистого API

Сво испытание иметь тот же API для JSON в JQuery DOM API. Поэтому, если вы знакомы с jquery. Его легко догнать. Более совершенный documentation из apis доступен.

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

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

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

сокращенная версия - 11,7 kb.

+0

Awesome! Хотелось бы, чтобы я мог подняться 5 раз! –

0

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

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

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

+0

Привет Кириллоид, спасибо за ваш ответ. IndexedDB имеет очень сложный API, и для него требуется диск IO, который является слишком большой проблемой производительности. Приложение представляет собой одностраничное веб-приложение, поэтому встроенная память JSON обеспечивает лучшую производительность. Я согласен, что требование к размеру довольно ограничено, но я не думаю, что это невозможно, учитывая, что я только после методов .get(), .set(), .index(), .each() и .data для отслеживания из JSON .. Я посмотрю на jsonpath и дам вам знать. –

+0

jsonpath интересен, мне нравится идея подражать XPath, но я не уверен в том, что мне нужно после XPath для неструктурированных документов, и я больше после того, как в памяти SQL-подобного хранилища, как вы (где имеется модель данных и отдельные объекты). –

+1

Xpath предназначен также для структурированных документов, но для ** дерева ** - структурированного ;-) – kirilloid

0

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

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

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

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

+0

Lawnchair выглядит довольно интересно .. –

Смежные вопросы