
JSONPath v10.4.1
Um fork do JSONPath de http://goessner.net/articles/JsonPath/
(veja também licenças para dependências de desenvolvimento.)
JSONPath Plus
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.
Recursos
- Compatível com a especificação jsonpath original
- Adições ou elaborações convenientes não fornecidas na especificação original:
^para obter o pai de um item correspondente~para obter nomes de propriedades de itens correspondentes (como array)- Seletores de tipo para obter:
- Tipos JSON básicos:
@null(),@boolean(),@number(),@string(),@array(),@object() @integer()- O tipo composto
@scalar()(que também aceitaundefinede 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 umotherTypeCallbackdefinido pelo usuário- Tipos não-JSON que ainda podem ser usados ao consultar
objetos JavaScript não-JSON (
@undefined(),@function(),@nonFinite())
- Tipos JSON básicos:
- Seletores abreviados
@path/@parent/@property/@parentProperty/@rootdentro de filtros - Escape
`para escapar a sequência restante- Sintaxe
@['...']/?@['...']para escapar caracteres especiais dentro de nomes de propriedades em filtros
- Documenta
$..(obtendo todos os componentes pais)
- Formatos de exportação ESM e UMD
- Além dos valores consultados, pode retornar várias meta-informações incluindo caminhos ou ponteiros para o valor, bem como o objeto pai e o nome da propriedade pai (para permitir modificação).
- Utilitários para converter entre caminhos, arrays e ponteiros
- Opção para prevenir avaliações permitidas na especificação original ou fornecer um sandbox para valores avaliados.
- Opção para callback para lidar com resultados conforme são obtidos.
Benchmarking
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.
Instalação
npm install jsonpath-plus
Configuração
Node.js
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Navegador
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>
ESM (Navegadores modernos)
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>
ESM (Bundlers)
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});
Uso
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.
Propriedades
As propriedades que podem ser fornecidas no objeto de opções ou no método evaluate (como primeiro argumento) incluem: