
JSONPath v10.4.1
Un fork de JSONPath issu de http://goessner.net/articles/JsonPath/
(voir aussi licences pour les dépendances de développement)
JSONPath Plus
Analysez, transformez et extrayez sélectivement des données de documents JSON (et d'objets JavaScript).
jsonpath-plus étend la spécification d'origine en ajoutant quelques
opérateurs supplémentaires et explicite certains comportements que l'original
ne précisait pas.
Essayez la démo navigateur ou Runkit (Node).
Veuillez noter : ce projet n'est actuellement pas maintenu activement. Nous pouvons accepter des PR bien documentées ou quelques mises à jour simples, mais n'envisageons pas de corriger des bogues ni d'ajouter de nouvelles fonctionnalités nous-mêmes.
Fonctionnalités
- Conforme à la spécification jsonpath d'origine
- Ajouts ou précisions pratiques non fournis dans la spécification d'origine :
^pour récupérer le parent d'un élément correspondant~pour récupérer les noms de propriétés des éléments correspondants (sous forme de tableau)- Sélecteurs de type permettant d'obtenir :
- Les types JSON de base :
@null(),@boolean(),@number(),@string(),@array(),@object() @integer()- Le type composé
@scalar()(qui accepte égalementundefinedet les nombres non finis lors de l'interrogation d'objets JavaScript, ainsi que tous les types de base non-objet/non-fonction) @other()utilisable en conjonction avec unotherTypeCallbackdéfini par l'utilisateur- Les types non-JSON pouvant néanmoins être utilisés lors de l'interrogation
d'objets JavaScript non-JSON (
@undefined(),@function(),@nonFinite())
- Les types JSON de base :
- Raccourcis
@path/@parent/@property/@parentProperty/@rootdans les filtres - Échappement
`pour échapper la séquence restante- Syntaxe
@['...']/?@['...']pour échapper les caractères spéciaux dans les noms de propriétés au sein des filtres
- Documente
$..(obtention de tous les composants parents)
- Formats d'exportation ESM et UMD
- En plus des valeurs interrogées, peut renvoyer diverses méta-informations notamment les chemins ou pointeurs vers la valeur, ainsi que l'objet parent et le nom de la propriété parente (pour permettre la modification).
- Utilitaires de conversion entre chemins, tableaux et pointeurs
- Option pour empêcher les évaluations autorisées dans la spécification d'origine ou fournir un bac à sable pour les valeurs évaluées.
- Option pour un rappel de gestion des résultats à mesure qu'ils sont obtenus.
Benchmarking
jsonpath-plus est régulièrement performant avec de grands comme de petits ensembles de données par rapport à d'autres bibliothèques d'interrogation JSON, selon json-querying-performance-testing. Vous pouvez vérifier ces résultats en exécutant le projet vous-même et en ajoutant d'autres cas de performance.
Install```shell
npm install jsonpath-plus
## Installation
### Node.js```js
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Navigateur
Pour une utilisation dans le navigateur, vous pouvez inclure directement dist/index-browser-umd.cjs ; aucune
astuce Browserify n'est nécessaire :```html
### ESM (Navigateurs modernes)
Vous pouvez également utiliser les imports de modules ES6 (pour les navigateurs modernes):```html
<script type="module">
import {
JSONPath
} from './node_modules/jsonpath-plus/dist/index-browser-esm.js';
const result = JSONPath({path: '...', json: {}});
</script>
ESM (Bundlers)
Ou si vous regroupez votre JavaScript (par exemple avec Rollup), utilisez simplement,
en notant que mainFields
devrait inclure browser pour les builds navigateur (pour Node, la valeur par défaut, qui
vérifie module, devrait convenir) :```js
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
## Utilisation
La signature complète disponible est:```
const result = JSONPath([options,] path, json, callback, otherTypeCallback);
Les arguments path, json, callback et otherTypeCallback
peuvent également être exprimés (avec toute autre propriété
disponible) sur options.
Notez que result contiendra tous les éléments trouvés (éventuellement
enveloppés dans un tableau), tandis que callback peut être utilisé si
vous souhaitez effectuer une opération à mesure que chaque élément est
découvert, la fonction de rappel étant exécutée 0 à N fois selon
le nombre d'éléments indépendants à trouver dans le résultat.
Consultez la documentation ci-dessous pour en savoir plus sur les arguments
disponibles de JSONPath.
Voir aussi la documentation de l'API.
Propriétés
Les propriétés qui peuvent être fournies sur l'objet options ou sur la
méthode evaluate (comme premier argument) incluent :