
JSONPath v10.4.1
Un fork de JSONPath de http://goessner.net/articles/JsonPath/
(véase también licencias para dependencias de desarrollo)
JSONPath Plus
Analiza, transforma y extrae selectivamente datos de documentos JSON (y objetos JavaScript).
jsonpath-plus amplía la especificación original para añadir algunos
operadores adicionales y hace explícitos algunos comportamientos que la
original no especificaba.
Prueba la demostración en el navegador o Runkit (Node).
Ten en cuenta: Este proyecto no se mantiene activamente en la actualidad. Podemos aceptar PRs bien documentados o algunas actualizaciones sencillas, pero no buscamos hacer correcciones ni añadir nuevas funcionalidades por nuestra cuenta.
Características
- Compatible con la especificación jsonpath original
- Adiciones o ampliaciones convenientes no incluidas en la especificación original:
^para obtener el padre de un elemento coincidente~para obtener los nombres de propiedades de los elementos coincidentes (como array)- Selectores de tipo para obtener:
- Tipos JSON básicos:
@null(),@boolean(),@number(),@string(),@array(),@object() @integer()- El tipo compuesto
@scalar()(que también aceptaundefinedy números no finitos al consultar objetos JavaScript, así como todos los tipos básicos no objeto/no función) @other()utilizable junto con unotherTypeCallbackdefinido por el usuario- Tipos no JSON que sin embargo pueden usarse al consultar
objetos JavaScript no JSON (
@undefined(),@function(),@nonFinite())
- Tipos JSON básicos:
- Selectores abreviados
@path/@parent/@property/@parentProperty/@rootdentro de filtros - Escapado
`para escapar la secuencia restante- Sintaxis
@['...']/?@['...']para escapar caracteres especiales dentro de nombres de propiedades en filtros
- Documenta
$..(obtener todos los componentes padre)
- Formatos de exportación ESM y UMD
- Además de los valores consultados, puede devolver diversa metainformación incluyendo rutas o punteros al valor, así como el objeto padre y el nombre de la propiedad padre (para permitir su modificación).
- Utilidades para convertir entre rutas, arrays y punteros
- Opción para prevenir evaluaciones permitidas en la especificación original o proporcionar un sandbox para los valores evaluados.
- Opción para callback para manejar resultados a medida que se obtienen.
Benchmarking
jsonpath-plus es consistentemente eficiente tanto con conjuntos de datos grandes como pequeños en comparación con otras bibliotecas de consulta json según json-querying-performance-testing. Puedes verificar estos hallazgos ejecutando el proyecto tú mismo y añadiendo más casos de rendimiento.
Instalación
npm install jsonpath-plus
Configuración
Node.js
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Navegador
Para uso en el navegador puedes incluir directamente dist/index-browser-umd.cjs; no
se necesita magia de Browserify:
<script src="node_modules/jsonpath-plus/dist/index-browser-umd.cjs"></script>
<script>
const result = JSONPath.JSONPath({path: '...', json: {}});
</script>
ESM (Navegadores modernos)
También puedes usar importaciones de módulos ES6 (para navegadores modernos):
<script type="module">
import {
JSONPath
} from './node_modules/jsonpath-plus/dist/index-browser-esm.js';
const result = JSONPath({path: '...', json: {}});
</script>
ESM (Empaquetadores)
O si estás empaquetando tu JavaScript (por ejemplo, con Rollup), simplemente usa,
teniendo en cuenta que mainFields
debe incluir browser para compilaciones de navegador (para Node, el valor predeterminado, que
comprueba module, debería estar bien):
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
Uso
La firma completa disponible es:
const result = JSONPath([options,] path, json, callback, otherTypeCallback);
Los argumentos path, json, callback y otherTypeCallback
también pueden expresarse (junto con cualquier otra de las
propiedades disponibles) en options.
Ten en cuenta que result contendrá todos los elementos encontrados (opcionalmente
envueltos en un array), mientras que callback puede usarse si
deseas realizar alguna operación a medida que se descubre cada elemento, con
la función callback ejecutándose de 0 a N veces dependiendo
del número de elementos independientes que se encuentren en el resultado.
Consulta la documentación a continuación para más información sobre los argumentos disponibles de JSONPath.
Consulta también la documentación de la API.
Propiedades
Las propiedades que pueden proporcionarse en el objeto de opciones o en el método evaluate (como primer argumento) incluyen: