Testeur JSONPath
Testez vos expressions JSONPath sur votre propre JSON, dans le navigateur. Filtres, tranches, descente récursive, chemins et pointeurs JSON.
Comment tester une expression JSONPath
- Collez votre JSON dans Données JSON, ou cliquez sur Charger l’exemple pour utiliser la librairie classique des exemples JSONPath.
- Saisissez une expression dans Expression JSONPath, ou choisissez-en une dans Exemples.
- Le résultat se met à jour pendant la saisie ; Exécuter relance la requête. La ligne d’état indique le nombre de résultats.
- Avec Afficher, basculez entre Valeurs, Chemins, Pointeurs JSON et Chemins et valeurs, puis copiez le résultat.
La syntaxe JSONPath en bref
| Syntaxe | Signification | Exemple |
|---|---|---|
$ |
la racine du document | $ |
.nom ou ['nom'] |
un enfant | $.store.bicycle |
* |
tous les enfants | $.store.* |
.. |
descente récursive, à toute profondeur | $..author |
[n] |
indice de tableau, à partir de 0 | $..book[2] |
[début:fin:pas] |
tranche ; un nombre négatif compte depuis la fin | $..book[-1:] |
[a,b] |
union | $..book[0,1] |
[?(expr)] |
filtre | $..book[?(@.price < 10)] |
^ |
le parent de chaque résultat | $..book[?(@.price > 20)]^ |
~ |
le nom de la propriété au lieu de sa valeur | $.store.*~ |
Les résultats suivent l’ordre du document. Chemins donne des chemins normalisés comme $['store']['book'][0]['title'], et Pointeurs JSON la forme RFC 6901 /store/book/0/title, pratique pour JSON Patch ou pour interpréter les chemins d’erreur d’un validateur JSON Schema.
Les filtres : ce qui est pris en charge
Les filtres sont évalués par jsonpath-plus en mode sûr : l’expression est analysée puis interprétée par un petit évaluateur, sans jamais passer par eval ni new Function. Entre [?( et )], vous pouvez utiliser :
@pour l’élément courant,@.champet@['champ']pour ses membres,@rootpour le document entier ($n’est pas disponible dans un filtre) ;- les comparaisons
==,!=,===,!==,<,<=,>,>=; - la logique
&&,||,!, l’arithmétique+ - * / %et le ternairea ? b : c; - les littéraux chaîne, nombre,
true,false,nullet expression régulière ; - les méthodes des valeurs elles-mêmes, par exemple
@.title.startsWith('S'),@.tags.includes('new')ou@.title.match(/lord/i); @property(la clé ou l’indice de l’élément courant),@parentet@path(son chemin normalisé), à la manière de jsonpath-plus.
L’accès à constructor, à __proto__ et au constructeur Function est bloqué. Si un filtre échoue sur un élément, par exemple @.isbn.startsWith('0') sur un livre sans isbn, cet élément ne correspond tout simplement pas ; une erreur de syntaxe dans l’expression est, elle, signalée. Les filtres écrits à la manière de la RFC 9535, [?@.price < 10] sans parenthèses, sont acceptés et lus comme [?(@.price < 10)]. Les fonctions de la RFC 9535 comme length(), count(), match() ou search() ne sont pas disponibles : utilisez les méthodes JavaScript, par exemple @.name.length.
Les sélecteurs de type de jsonpath-plus fonctionnent aussi en fin de chemin : $..*@number() renvoie tous les nombres, et @string(), @boolean(), @array(), @object(), @null() et @integer() font de même pour les autres types.
Questions fréquentes
Mon JSON est-il envoyé sur un serveur ?
Non. L’analyse et l’évaluation se font dans votre navigateur ; vos données ne quittent jamais votre ordinateur.
Pourquoi mon filtre ne renvoie-t-il rien ?
Vérifiez que le chemin situé avant le filtre sélectionne bien un tableau ou un objet : $.store.book[?(@.price < 10)] filtre les livres, alors que $.store[?(@.price < 10)] examine book et bicycle. Une propriété absente d’un élément vaut undefined, et toute comparaison avec elle est fausse.
Quelle différence entre `==` et `===` ?
Comme en JavaScript, == convertit les types ("10" == 10 est vrai), alors que === compare le type et la valeur.
Pourquoi le résultat est-il limité ?
Seuls les 10 000 premiers résultats sont écrits, pour que la page reste fluide ; la ligne d’état donne le nombre total.
JSONPath est-il normalisé ?
Oui, depuis 2024, par la RFC 9535. Les implémentations diffèrent encore, surtout pour les filtres ; cet outil suit jsonpath-plus, qui reprend la syntaxe du JSONPath original de Stefan Goessner.
Outils similaires
- Formateur et validateur JSON Formateur et validateur JSON gratuit qui indente, minifie et vérifie votre JSON dans le navigateur, avec erreurs signalées par ligne et colonne.
- Validateur de schéma JSON Validez un document JSON avec un schéma JSON dans votre navigateur. Chaque erreur est listée avec son chemin, son mot-clé et sa place dans le schéma.
- Testeur d'expressions régulières Testez vos expressions régulières JavaScript en direct : correspondances surlignées, groupes de capture, remplacement et explication de chaque élément.