Requête JSONPath
JSONExécutez des requêtes JSONPath / de style jq sur un document JSON et mettez en surbrillance chaque correspondance.
Les URL distantes ne sont pas récupérées ; collez votre JSON directement.
Sur cette page
Qu’est-ce qu’un testeur JSONPath ?#
Quand un document JSON est petit, vous le lisez avec les yeux. Quand il atteint quelques milliers de lignes — une réponse d’API, un dump de configuration, une arborescence de dépendances — vos yeux cessent d’être le bon outil. JSONPath est le langage de requête pour cette situation : une expression compacte qui dit « donne-moi chaque champ price », ou « les titres des livres moins chers que 10 », ou « chaque nœud nommé isbn quelle que soit la profondeur où il est enfoui ».
Considérez-le comme un croisement entre un chemin de fichier et un mini langage de filtre. $.store.book[0].title descend dans une structure connue comme le ferait un chemin de système de fichiers. $..author signifie « descends récursivement et collecte chaque author que tu trouves ». [?(@.price < 10)] est un filtre : ne garder que les éléments dont le price du nœud courant est inférieur à dix. Le @ signifie toujours « le nœud que je suis en train d’examiner ».
Cette page exécute une expression JSONPath sur votre JSON, liste chaque correspondance, et — la partie qui fait gagner le plus de temps — surligne les plages correspondantes directement sur le document mis en forme, afin que vous voyiez d’un coup d’œil si votre expression a sélectionné ce que vous pensiez sélectionner. Les filtres sont évalués par un analyseur d’expressions sûr, jamais en exécutant du code, donc un blob non fiable ne peut rien exécuter.
Mode d’emploi#
- Collez votre JSON dans le panneau Entrée à gauche, ou cliquez sur Exemple pour charger le jeu de données classique de la librairie.
- Saisissez une expression JSONPath dans le champ JSONPath à droite. Points de départ courants :
$.store.book[*].author— leauthorde chaque élément du tableau.$..author— descente récursive : chaqueauthor, n’importe où.$.store.book[?(@.price < 10)].title— une expression de filtre.$.store.book[?(@.isbn)].isbn— un test d’existence (possède une cléisbn).
- La liste des correspondances sous le champ se remplit avec une entrée par résultat, et l’aperçu JSON en pleine largeur en dessous surligne chaque plage correspondante à sa place.
- L’en-tête à côté de Correspondances affiche le nombre. Une expression qui correspond à zéro nœud signale tout de même un succès (liste vide) — seule une expression syntaxiquement cassée affiche une erreur.
- Cliquez sur Copier les correspondances dans la barre d’outils pour récupérer les valeurs correspondantes sous forme de tableau JSON, ou sur Effacer pour réinitialiser les deux panneaux.
Les requêtes se déclenchent au fil de la frappe. Si le JSON lui-même est invalide, la barre d’état pointe vers la ligne et la colonne exactes à corriger.
Principales fonctionnalités#
- Surlignage en place. Chaque valeur correspondante est superposée au document mis en forme, donc un
$..récursif qui attrape trente nœuds est instantanément visible au lieu d’être enfoui dans une liste. - Évaluation de filtre sûre. Les expressions comme
[?(@.price < 10)]sont analysées par un évaluateur d’expressions, et non confiées à une exécution de code dynamique — la page reste conforme à la CSP même sur une entrée hostile. - « Aucune correspondance » distingué d’« erreur ». Une expression valide qui ne sélectionne rien est signalée comme zéro correspondance ; seule une expression mal formée est marquée comme erreur. Vous ne confondez jamais « rien trouvé » avec « cassé ».
- Un pointeur par correspondance. Chaque résultat porte son JSON Pointer (par exemple
/store/book/2/title), donc vous savez exactement d’où dans l’arborescence une valeur provient. - Copie sous forme de tableau. Les valeurs correspondantes s’exportent en un tableau JSON propre, prêt à être passé à l’étape suivante.
- Local uniquement. Vos données sont interrogées dans le navigateur. Il n’y a aucun backend et aucun téléversement.
Exemple détaillé#
Chargez Exemple, puis lancez un filtre qui trouve les titres des livres bon marché. Saisissez ceci dans le champ JSONPath :
$.store.book[?(@.price < 10)].title
La liste des correspondances renvoie deux titres, parce que seulement deux des quatre livres du jeu ont un prix inférieur à 10 :
[
"Sayings of the Century",
"Moby Dick"
]
L’aperçu JSON surligne ces deux valeurs title à leur place, et vous voyez pourquoi les deux autres ont été exclues — Sword of Honour (12.99) et The Lord of the Rings (22.99) sont au-dessus du seuil. Basculez vers un test d’existence pour trouver quels livres portent un ISBN :
$.store.book[?(@.isbn)].isbn
Cela renvoie les deux chaînes ISBN et rien d’autre, parce que le filtre ne garde que les éléments qui ont effectivement une clé isbn — un modèle pratique pour trouver « quels enregistrements manquent d’un champ » en le niant.
FAQ#
Quelle est la différence entre $ et @ ?#
$ est la racine du document — la valeur JSON entière que vous avez collée. @ est le nœud courant examiné à l’intérieur d’un filtre. Donc dans [?(@.price < 10)], le @ désigne le livre que le filtre est en train de tester ; écrire $.price à cet endroit remonterait à la racine et chercherait un price de premier niveau qui n’existe pas.
Mon expression ne correspond à rien. Est-ce un bug ?#
Probablement pas. Une expression valide qui sélectionne zéro nœud est une requête réussie au résultat vide — par exemple, $.store.book[?(@.price > 1000)] sur l’exemple signifie simplement qu’aucun livre n’est aussi cher. L’en-tête affiche « 0 correspondance » sans erreur. C’est seulement quand l’expression elle-même est inanalysable que la page signale une erreur.
Pourquoi un filtre n’exécute-t-il pas de JavaScript arbitraire ?#
Les filtres sont évalués par un analyseur d’expressions dédié qui comprend les comparaisons, les opérateurs booléens et les références @ — il ne construit ni n’exécute de code. C’est délibéré : cela garde l’outil sûr à pointer sur du JSON en lequel vous n’avez pas une confiance aveugle, et cela maintient la page dans la politique de sécurité de contenu du navigateur.
JSONPath peut-il modifier ou retirer des nœuds ?#
Non — c’est un outil de requête en lecture seule. Il sélectionne et affiche, il ne mute pas votre JSON. Si vous voulez voir comment deux documents diffèrent, adressez-vous à l’outil /en/json/diff/.