
Un fork de JSONPath de http://goessner.net/articles/JsonPath/
(véase también licencias para dependencias de desarrollo)
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.
^ para obtener el padre de un elemento coincidente~ para obtener los nombres de propiedades de los elementos coincidentes (como array)@null(), @boolean(), @number(), @string(), @array(), @object()@integer()@scalar() (que también acepta undefined y
números no finitos al consultar objetos JavaScript, así como todos los tipos básicos no objeto/no función)@other() utilizable junto con un otherTypeCallback definido por el usuario@undefined(), @function(), @nonFinite())@path/@parent/@property/@parentProperty/@root dentro de filtros` para escapar la secuencia restante@['...']/?@['...'] para escapar caracteres especiales dentro de
nombres de propiedades en filtros$.. (obtener todos los componentes padre)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.
npm install jsonpath-plus
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
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>
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>
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});
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.
Las propiedades que pueden proporcionarse en el objeto de opciones o en el método evaluate (como primer argumento) incluyen: