2012-03-16 22 views
7

Actualmente estoy trabajando en un proyecto en el que trato con una cantidad considerable de datos JSON que se transmiten hacia atrás y hacia delante y que el navegador almacena como listas de objetos javascript. Por ejemplo:Javascript Biblioteca de manipulación de datos 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.. 
     ] 
    } 

estoy encontrando a mí mismo codificación de toda clase de indexación y algoritmos de ordenación para manipular eficazmente estos datos y estoy empezando a pensar que este tipo de cosas debe haber sido hecho antes.

tengo experiencia de usar los Ext.data.Store y Ext.data.Record objetos para llevar a cabo este tipo de manipulación de datos, pero yo creo que son demasiado complejos para los desarrolladores junior y el proyecto que estoy trabajando es una pequeña aplicación móvil en el que no podemos darnos el lujo de tener una biblioteca de más de 300 K + añadida solo por el bien, así que necesito algo realmente mínimo.

Cualquier idea si hay un marco manipulación Javascript JSON que producen los siguientes:

  1. Puede tienda,
  2. recuperar,
  3. tipo,
  4. y iterate a través de datos JSON,
  5. con un API limpia,
  6. mínima fricción rendimiento (Los móviles no tienen una gran cantidad de potencia de cálculo)
  7. y una pequeña carga útil que es ideal < 10K?

que podría estar pidiendo demasiado, pero es de esperar que alguien se usa algo como esto ... El tipo de cosas que estoy buscando es la el equivalente de JSON jQuery, quizás no es tan descabellado.

Respuesta

10

echar un vistazo en jsonQ

Se fullfill todo el requisito señalado en cuestión.

  • puede almacenar,
  • recuperar
  • y iterar a través de datos JSON,

Proporcionar atravesar (como encontrar, hermanos, padres, etc.) y el método de manipulación como (valor, anexar, anteponga) ;

  • tipo

proporcionar un método y tipo array especie método directo que ejecuta en objeto jsonQ. (Tanto el método para ordenar ejecutar de forma recursiva)

  • con un API limpio

Es una prueba para tener la misma API para JSON como jQuery API DOM. Entonces, si estás familiarizado con jquery. Es fácil ponerse al día. Más sobre completo documentation de apis está disponible.

  • mínima fricción rendimiento

Se crea un nuevo formato en la inicialización de jsonQ de datos JSON que se utiliza internamente para atravesar los datos que son más eficientes. (Es como tener todos los bucles a la vez, por lo que no es necesario realizar bucle sobre bucle para iterar cada vez que json).

  • y una pequeña carga que es idealmente < 10K?

versión miniaturizada es de 11,7 kb.

+0

impresionante! ¡Ojalá pudiera votar 5 veces! –

0

En realidad su pregunta no es buena, supongo. De su ejemplo, se puede ver que está tratando de emular el almacenamiento de tipo SQL con JSON. Tal vez, solo necesitas tomar IndexedDB?

jsonpath los partidos 4-7 puntos (y tal vez 3) de sus requisitos exactos y objeto global permite a 1 y 2 con sólo una vez para cada llamada.

También los requisitos en mi humilde opinión son irreales, especialmente con el último sobre el tamaño.

+0

Hola Kirilloid, gracias por su respuesta. IndexedDB tiene una API muy compleja, y requiere disco IO, que es un problema de rendimiento demasiado. La aplicación es una aplicación web de una sola página, por lo que JSON en memoria proporciona de lejos el mejor rendimiento. Estoy de acuerdo con el requisito de tamaño es bastante limitante, pero yo no creo que es imposible dado que yo soy sólo después de que los métodos .get(), .set(), .index(), each() y la propiedad .data para hacer el seguimiento del JSON ... Echaré un vistazo a jsonpath y te lo haré saber. –

+0

jsonpath es interesante, me gusta la idea de tratar de emular XPath, pero no estoy seguro que es lo que busco desde XPath es para los documentos de la ONU-estructurado y estoy más después en memoria de tipo SQL de almacenamiento como si mencionado (donde hay un modelo de datos y entidades distintas). –

+1

Xpath es para documentos estructurados también, pero por árbol ** ** - estructurada ;-) – kirilloid

0

Creo que Lawnchair es algo que está buscando. Su página de inicio dice que está hecho con el móvil en mente, sin embargo no lo he usado antes, así que no puedo comentar sobre eso.

Es un simple almacén de valores-clave, aunque puede definir sus propios índices, algo así como con CouchDB. No he visto soporte para selectores, sin embargo, hay un plugin de consultas disponible, que promete una fácil selección.

Algo como jQuery se basa en sizzle, que es la biblioteca de selector de CSS, que no es aplicable en su caso. XPath es en mi opinión su mejor apuesta, ya que se usa principalmente con XML, una estructura de árbol.Desde objeto JSON se puede representar como un árbol, he encontrado JSONSelect, una pequeña biblioteca que soporta selectores JSON Xpath en forma de 'CSS-ish'.

Si usted sería capaz de alguna manera para tapar JSONSelect en Lawnchair, creo que ha encontrado una gran combinación :)

+0

Lawnchair se ve muy interesante .. –

Cuestiones relacionadas