
Un fork di JSONPath da http://goessner.net/articles/JsonPath/
(vedi anche licenze per le dipendenze di sviluppo)
Analizza, trasforma ed estrae selettivamente dati da documenti JSON (e oggetti JavaScript).
jsonpath-plus estende la specifica originale aggiungendo alcuni
operatori aggiuntivi e rende espliciti alcuni comportamenti che l'originale
non specificava.
Prova la demo nel browser o Runkit (Node).
Nota bene: questo progetto al momento non è mantenuto attivamente. Potremmo accettare PR ben documentate o alcuni semplici aggiornamenti, ma non intendiamo apportare correzioni o aggiungere nuove funzionalità autonomamente.
^ per ottenere il genitore di un elemento corrispondente~ per ottenere i nomi delle proprietà degli elementi corrispondenti (come array)@null(), @boolean(), @number(), @string(), @array(), @object()@integer()@scalar() (che accetta anche undefined e
numeri non finiti quando si interrogano oggetti JavaScript, oltre a tutti i tipi di base non-oggetto/non-funzione)@other() utilizzabile insieme a un otherTypeCallback definito dall'utente@undefined(), @function(), @nonFinite())@path/@parent/@property/@parentProperty/@root all'interno dei filtri` per fare escaping della sequenza rimanente@['...']/?@['...'] per fare escaping di caratteri speciali all'interno
dei nomi delle proprietà nei filtri$.. (ottenere tutti i componenti genitore)jsonpath-plus è costantemente performante sia con dataset grandi che piccoli rispetto ad altre librerie di query json secondo json-querying-performance-testing. Puoi verificare questi risultati eseguendo tu stesso il progetto e aggiungendo altri casi di performance.
npm install jsonpath-plus
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Per l'utilizzo nel browser puoi includere direttamente dist/index-browser-umd.cjs; non è necessaria alcuna magia di Browserify:
<script src="node_modules/jsonpath-plus/dist/index-browser-umd.cjs"></script>
<script>
const result = JSONPath.JSONPath({path: '...', json: {}});
</script>
Puoi anche usare gli import di ES6 Module (per browser moderni):
<script type="module">
import {
JSONPath
} from './node_modules/jsonpath-plus/dist/index-browser-esm.js';
const result = JSONPath({path: '...', json: {}});
</script>
Oppure, se stai effettuando il bundling del tuo JavaScript (ad esempio con Rollup), usa semplicemente,
tenendo presente che mainFields
dovrebbe includere browser per le build destinate al browser (per Node, il valore predefinito, che
controlla module, dovrebbe andare bene):
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
La firma completa disponibile è:
const result = JSONPath([options,] path, json, callback, otherTypeCallback);
Gli argomenti path, json, callback e otherTypeCallback
possono essere espressi in alternativa (insieme a qualsiasi altra delle
proprietà disponibili) su options.
Si noti che result conterrà tutti gli elementi trovati (opzionalmente
racchiusi in un array), mentre callback può essere utilizzato se si
desidera eseguire qualche operazione man mano che ogni elemento viene
scoperto, con la funzione di callback eseguita da 0 a N volte a seconda
del numero di elementi indipendenti da trovare nel risultato.
Consultare la documentazione di seguito per ulteriori informazioni sugli argomenti disponibili di JSONPath.
Vedere anche la documentazione API.
Le proprietà che possono essere fornite sull'oggetto options o sul metodo evaluate (come primo argomento) includono: