À quoi ça sert
JSONPath est un langage de requête pour JSON, l’équivalent de XPath pour XML. Une requête comme $.store.book[*].title parcourt un document et sélectionne les valeurs qui vous intéressent. Cet évaluateur exécute une expression JSONPath sur le JSON collé et liste chaque correspondance dans un tableau JSON : les valeurs trouvées, leurs chemins normalisés (par exemple $['store']['book'][0]['title']), ou les deux.
Il suit la RFC 9535, le standard de l’IETF publié en 2024 : les résultats sont donc identiques à ceux des bibliothèques modernes en JavaScript, Java, Python, Go et d’autres langages. Servez-vous-en pour essayer une requête avant de l’écrire dans votre code, comprendre pourquoi un filtre ne renvoie rien ou extraire quelques champs d’une grosse réponse d’API.
Mode d’emploi
- Collez du JSON dans la zone JSON, importez un fichier
.jsonou cliquez sur Exemple pour charger le classique document de librairie. - Saisissez une requête dans Expression JSONPath. Les correspondances se mettent à jour pendant la saisie.
- Choisissez quoi Afficher : valeurs, chemins ou paires chemin/valeur.
- Copiez ou téléchargez le résultat. En cas d’erreur de syntaxe, le caractère où l’analyse a échoué est indiqué.
Aide-mémoire de la syntaxe
| Expression | Signification |
|---|---|
$ | La racine du document |
.name ou ['name'] | Un membre d’un objet |
[0], [-1] | Un élément de tableau (les négatifs comptent depuis la fin) |
[1:3], [::2] | Une tranche : début, fin (exclue) et pas |
* | Tous les membres ou éléments |
..name | name à n’importe quelle profondeur |
[?@.price < 10] | Les enfants pour lesquels le filtre est vrai ; @ est l’élément courant |
Les filtres peuvent combiner des conditions avec &&, || et !, comparer avec d’autres parties du document via $ et appeler des fonctions : length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') pour une correspondance de toute la chaîne avec l’expression régulière, et search(@.title, 'Ring') pour une correspondance n’importe où.
Exemple
Avec la librairie d’exemple, cette requête sélectionne les titres des livres à moins de 10 :
$.store.book[?@.price < 10].title
et renvoie :
["Sayings of the Century", "Moby Dick"]
Remplacez-la par $..book[?@.isbn].author pour lister les auteurs des livres qui ont un ISBN, ou par $..price pour réunir tous les prix du magasin, y compris celui du vélo.
FAQ
› Quelle syntaxe JSONPath est prise en charge ?
La syntaxe standard de la RFC 9535 : noms de membres avec point ou crochets, jokers, index de tableau (y compris négatifs), tranches, recherche en profondeur avec .., filtres avec comparaisons et && || !, ainsi que les fonctions length(), count(), match(), search() et value(). L’ancienne forme ?(@.price < 10) fonctionne aussi, car les parenthèses ne font que grouper.
› Pourquoi ma requête renvoie-t-elle un tableau vide ?
Un tableau vide signifie que la requête est valide mais que rien ne correspond. Vérifiez les noms de membres (sensibles à la casse) et si une valeur est un tableau ou un objet. Une requête large comme $..* avec Afficher sur Chemins montre le contenu du document.
› Puis-je utiliser des expressions de script comme [(@.length-1)] ?
Non. Les expressions de script exécutent du code arbitraire et ne font pas partie du standard. Utilisez un index négatif : [-1] est le dernier élément et [-2:] les deux derniers.
› Mon JSON est-il envoyé à un serveur ?
Non. La requête est analysée et évaluée dans votre navigateur par le code de la page ; rien n’est envoyé.