
Um fork do JSONPath de http://goessner.net/articles/JsonPath/
(veja também licenças para dependências de desenvolvimento.)
Analise, transforme e extraia seletivamente dados de documentos JSON (e objetos JavaScript).
jsonpath-plus expande a especificação original para adicionar alguns
operadores adicionais e torna explícitos alguns comportamentos que a
original não especificava.
Experimente a demonstração no navegador ou Runkit (Node).
Observe: Este projeto não está sendo mantido ativamente no momento. Podemos aceitar PRs bem documentados ou algumas atualizações simples, mas não estamos buscando fazer correções ou adicionar novos recursos por conta própria.
^ para obter o pai de um item correspondente~ para obter nomes de propriedades de itens correspondentes (como array)@null(), @boolean(), @number(), @string(), @array(), @object()@integer()@scalar() (que também aceita undefined e
números não finitos ao consultar objetos JavaScript, bem como todos os tipos básicos não-objeto/não-função)@other() utilizável em conjunto com um otherTypeCallback definido pelo usuário@undefined(), @function(), @nonFinite())@path/@parent/@property/@parentProperty/@root dentro de filtros` para escapar a sequência restante@['...']/?@['...'] para escapar caracteres especiais dentro de
nomes de propriedades em filtros$.. (obtendo todos os componentes pais)jsonpath-plus é consistentemente performático com conjuntos de dados grandes e pequenos em comparação com outras bibliotecas de consulta json, de acordo com json-querying-performance-testing. Você pode verificar essas descobertas executando o projeto você mesmo e adicionando mais casos de desempenho.
npm install jsonpath-plus
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Para uso no navegador, você pode incluir diretamente dist/index-browser-umd.cjs; nenhuma
mágica do Browserify é necessária:
<script src="node_modules/jsonpath-plus/dist/index-browser-umd.cjs"></script>
<script>
const result = JSONPath.JSONPath({path: '...', json: {}});
</script>
Você também pode usar importações de Módulo 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>
Ou, se você estiver empacotando seu JavaScript (por exemplo, com Rollup), basta usar,
observando que mainFields
deve incluir browser para builds de navegador (para Node, o padrão, que
verifica module, deve ser suficiente):
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
A assinatura completa disponível é:
const result = JSONPath([options,] path, json, callback, otherTypeCallback);
Os argumentos path, json, callback e otherTypeCallback
podem, em alternativa, ser expressos (juntamente com qualquer outra das
propriedades disponíveis) em options.
Note que result conterá todos os itens encontrados (opcionalmente
envolvidos num array), enquanto callback pode ser usado se
pretender realizar alguma operação à medida que cada item é descoberto, sendo
a função de callback executada 0 a N vezes dependendo
do número de itens independentes a encontrar no resultado.
Consulte a documentação abaixo para mais informações sobre os argumentos disponíveis do JSONPath.
Consulte também a documentação da API.
As propriedades que podem ser fornecidas no objeto de opções ou no método evaluate (como primeiro argumento) incluem: