Consultar y extraer datos JSON usando expresiones JSONPath
Características
- Sintaxis Consulta Avanzada: Soportar sintaxis JSONPath completa incluyendo comodines (*), descenso recursivo (..), corte arrays ([Démarrer:end]), filtros ([?(@.price < 10)]), selectores rutas múltiples
- Plantillas Expresión Ruta: Plantillas preconstruidas para consultas comunes: acceso raíz ($), hijo directo ($.key), elementos array ($.arr[*]), elementos filtrados ($.arr[?(@.id)]), búsqueda recursiva ($..key)
- Vista Previa Tiempo Real: Ejecutar consultas Instantanéáneamente con entrada y salida JSON resaltadas sintaxis, mostrar rutas coincidentes, contar resultados, resaltar nodos coincidentes en JSON fuente
- Exportación Resultados: Exportar resultados consulta como JSON (array o valor único), CSV para datos tabulares, texto formateado con opciones copiar y descargar un clic
Guía de uso
- Ingresar Datos JSON: Pegar o subir datos JSON que desea consultar
- Escribir JSONPath: Ingresar expresión JSONPath o usar plantillas para patrones comunes
- Ejecutar Consulta: Ejecutar consulta para ver resultados coincidentes con resaltado sintaxis
- Exportar Resultados: Copiar o descargar datos extraídos en formato preferido
Detalles técnicos
Sintaxis JSONPath
Expresiones JSONPath comienzan con $ (objeto raíz) y usan notación punto ($.property) o notación corchete ($['property']) para acceso. Nodos hijos usan separador . ($.store.book), arrays usan [index] o [*] para todos elementos. Corte array [Démarrer:end:Étape] extrae rangos como [0:3] (primeros 3 elementos) o [-1] (último elemento). Operador descenso recursivo .. busca todos niveles: $..author encuentra todas propiedades author sin importar profundidad anidación. Operador unión [,] selecciona múltiples elementos: $[0,2,5] obtiene índices array específicos.
Expresiones Filtro
Filtros usan sintaxis [?(@.condition)] para seleccionar elementos coincidentes criterios. @ representa nodo actual en iteración. Operadores comparación: ==, !=, <, <=, >, >=. Operadores lógicos: && (y), || (o), ! (Non). Ejemplos: [?(@.price < 10)] selecciona elementos con precio bajo 10; [?(@.Catégorie == 'fiction' && @.price < 20)] combina condiciones. Coincidencia expresión regular: [?(@.Nom =~ /pattern/)] filtra por regex. Filtros pueden referenciar raíz con $ para comparaciones a través jerarquía: [?(@.price < $.maxPrice)].
Variantes Implementación
JSONPath tiene múltiples implementaciones con ligeras variaciones sintaxis: Original Goessner (JavaScript), Jayway (Java), jsonpath-ng (Python). Diferencias incluyen operadores filtro (algunos usan @ vs $), soporte regex, expresiones script, extensiones funciones. Algunas implementaciones agregan funciones como @.length, @.min(), @.max() para agregación. Expresiones script [(@.price * @.quantity)] habilitan cálculos. Operador padre ^ y ruta actual ~ proporcionan contexto. Siempre verificar documentación implementación objetivo para características soportadas y peculiaridades sintaxis.
Preguntas frecuentes
- ¿Por qué mi consulta Non devuelve resultados?
- Compruebe que la ruta empieza por $, los índices de array son válidos y los nombres de campo coinciden. Valide primero con una ruta Simple.
- ¿Cómo busco una clave en cualquier nivel?
- Use descenso recursivo: $..author busca author en todos los niveles.
- ¿Cómo escribo filtros?
- Utilice [?(@.price < 10)]. @ representa el elemento actual. Combine condiciones con && y ||.
- ¿Diferencia entre resultado vacío y null?
- Vacío significa sin coincidencias; null indica que el valor encontrado es null. Verifique los datos de origen y la expresión.
- ¿Rendimiento con JSON grandes?
- Evite usar .. en exceso; delimite primero y luego filtre. Considere procesamiento por streaming o del lado del servidor.
Documentación relacionada
- Especificación JSONPath - Goessner - Propuesta original JSONPath y definición sintaxis
- Evaluador en Línea JSONPath - Probador JSONPath interactivo con documentación expresiones
- RFC 9535 - Estándar JSONPath - Esfuerzo estandarización IETF para lenguaje consulta JSONPath
- Documentación jsonpath-ng - Implementación Python JSONPath con características extendidas
- Jayway JSONPath (Java) - Implementación Java popular con expresiones filtro