183 votos

¿Existe un lenguaje de consulta para JSON?

Hay una (aproximadamente) de SQL o XQuery-como lenguaje para consultar JSON?

Estoy pensando muy pequeños conjuntos de datos que se asignan bien a JSON donde sería agradable fácilmente responder a preguntas tales como "¿qué son todos los valores de X donde Y > 3" o a hacer lo de siempre SUMA / CONTADOR tipo de operaciones.

Completamente inventadas ejemplo, algo como esto:

[{"x": 2, "y", 0}}, {"x": 3, "y", 1}, {"x": 4, "y": 1}]

SUM(X) WHERE Y > 0     (would equate to 7)
LIST(X) WHERE Y > 0    (would equate to [3,4])

Estoy pensando que esto iba a funcionar, tanto del lado del cliente y del lado del servidor con los resultados que se convierte en el idioma apropiado-estructura de datos específica (o tal vez guardado como JSON)

Una rápida búsqueda en Google sugiere que las personas han pensado y aplicado un par de cosas (JAQL), pero no parece un uso estándar o un conjunto de bibliotecas ha surgido todavía. Mientras que cada función es bastante trivial para implementar en su propia, si alguien ya lo ha hecho la derecha no quiero volver a inventar la rueda.

Alguna sugerencia?

Edit: Gracias por las sugerencias de la gente. Se lo agradezco. De hecho, esto puede ser una mala idea o JSON puede ser demasiado genérico, un formato para lo que estoy pensando.. La razón para querer un lenguaje de consulta en lugar de sólo hacer el resumen/etc funciona directamente como necesario es que espero que para construir las consultas de manera dinámica basándose en la entrada de usuario. Un poco como el argumento de que "no necesitamos SQL, podemos escribir las funciones que necesitamos". Finalmente, que la obtiene de la mano, o se termina de escribir su propia versión de SQL, como usted lo empuja más y más. (Vale, ya sé que es un poco tonto argumento, pero usted consigue la idea..)

73voto

StaxMan Puntos 34626

Claro, ¿qué tal:

Todos ellos parecen ser una obra poco en progreso, pero trabajar en algún grado. Ellos también son similares a XPath y XQuery conceptualmente; a pesar de XML y JSON tienen diferentes modelos conceptuales (jerárquicos vs objeto / struct).

44voto

Hugoware Puntos 13645

Me gustaría recomendar mi proyecto estoy trabajando en llamada jLinq . Estoy en busca de comentarios para que yo estaría interesado en escuchar lo que piensas.

Si le permite escribir consultas similar a como lo haría en LINQ ...

 var results = jLinq.from(records.users)

    //you can join records
    .join(records.locations, "location", "locationId", "id")

    //write queries on the data
    .startsWith("firstname", "j")
    .or("k") //automatically remembers field and command names

    //even query joined items
    .equals("location.state", "TX")

    //and even do custom selections
    .select(function(rec) {
        return {
            fullname : rec.firstname + " " + rec.lastname,
            city : rec.location.city,
            ageInTenYears : (rec.age + 10)
        };
    });
 

Es totalmente extensible también!

La documentación está todavía en curso, pero todavía se puede probar en línea.

26voto

user430799 Puntos 161

La lista está creciendo:

8voto

Roger Puntos 785

El incorporada en array.filter() método hace que la mayoría de estos llamados javascript consulta las bibliotecas obsoletas

Usted puede poner tantas condiciones en el interior del delegado como se puede imaginar: la comparación simple, startsWith, etc Yo no lo he probado, pero que probablemente podría nido filtra demasiado para realizar consultas de colecciones internas.

6voto

James Newton-King Puntos 13880

Si está utilizando NET entonces Json.NET apoya las consultas LINQ sobre la parte superior de JSON. Este mensaje tiene algunos ejemplos. Es compatible con el filtrado, la cartografía, agrupación, etc

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X