
Un fork de JSONPath issu de http://goessner.net/articles/JsonPath/
(voir aussi licences pour les dépendances de développement)
Analyser, transformer et extraire sélectivement des données de documents JSON (et d'objets JavaScript).
jsonpath-plus étend la spécification originale pour ajouter quelques
opérateurs supplémentaires et expliciter 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 activement maintenu. Nous pouvons accepter des PR bien documentées ou quelques mises à jour simples, mais nous ne cherchons pas à apporter des correctifs ou à ajouter de nouvelles fonctionnalités nous-mêmes.
^ 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)@null(), @boolean(), @number(), @string(), @array(), @object()@integer()@scalar() (qui accepte également undefined et
les nombres non finis lors de l'interrogation d'objets JavaScript, ainsi que tous les types de base non-objet/non-fonction)@other() utilisable conjointement avec un otherTypeCallback défini par l'utilisateur@undefined(), @function(), @nonFinite())@path/@parent/@property/@parentProperty/@root dans les filtres` pour échapper la séquence restante@['...']/?@['...'] pour échapper les caractères spéciaux dans
les noms de propriétés au sein des filtres$.. (récupération de tous les composants parents)jsonpath-plus est constamment performant avec des jeux de données grands et petits comparé à 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.
npm install jsonpath-plus
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
Pour une utilisation dans le navigateur, vous pouvez inclure directement dist/index-browser-umd.cjs ; aucune
magie Browserify n'est nécessaire :
<script src="node_modules/jsonpath-plus/dist/index-browser-umd.cjs"></script>
<script>
const result = JSONPath.JSONPath({path: '...', json: {}});
</script>
Vous pouvez également utiliser les imports de modules ES6 (pour les navigateurs modernes) :
<script type="module">
import {
JSONPath
} from './node_modules/jsonpath-plus/dist/index-browser-esm.js';
const result = JSONPath({path: '...', json: {}});
</script>
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) :
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
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 des
propriétés disponibles) 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 au fur et à mesure que chaque élément est découvert, la
fonction de rappel étant exécutée de 0 à N fois selon
le nombre d'éléments indépendants à trouver dans le résultat.
Voir la documentation ci-dessous pour plus d'informations sur les arguments disponibles de JSONPath.
Voir aussi la documentation de l'API.
Les propriétés qui peuvent être fournies sur l'objet options ou la méthode evaluate (comme premier argument) incluent :