Aller au contenu

Testeur JSONPath

JSONPath Tester

Exécute une expression JSONPath sur un document et met en évidence les nœuds trouvés au fil de la saisie.

Exécute une requête JSONPath sur un document et montre chaque nœud sélectionné, avec le chemin qui mène à chacun. Il implémente le RFC 9535 — la norme de 2024 — plutôt que l'une des vingt années d'implémentations mutuellement incompatibles qui l'ont précédée, ce qui compte dès que votre requête contient un filtre.

🔒 Fonctionne entièrement dans votre navigateurjsonjsonpathquerytest

Requête

Depuis la racine : n’importe où en dessous, le membre « book » ; puis les enfants qui passent le filtre ; puis le membre « title ».

Document

Correspondances

Les résultats apparaissent ici au fur et à mesure que vous tapez.

Ceci suit la RFC 9535, la norme de 2024, et non les vingt ans d’implémentations incompatibles qui l’ont précédée. Les différences qui font mal : un résultat est une liste de nœuds et garde les doublons, .. visite un nœud avant ses enfants, un membre absent n’est égal qu’à un autre membre absent, et comparer avec une requête qui pourrait désigner plusieurs nœuds est une erreur de syntaxe plutôt qu’une supposition. Les motifs contenus dans match() et search() sont confiés au moteur d’expressions régulières du navigateur lui-même, qui accepte plus que le dialecte I-Regexp prescrit par la RFC.

Comment s’en servir

  1. Collez le document

    Tout ce qui s'analyse comme du JSON. La requête tourne dans un worker : un gros document laisse donc la page réactive pendant que vous tapez.

  2. Écrivez la requête, ou partez d'un exemple

    Les boutons sous la zone couvrent les formes dont on a besoin : un joker, une recherche sur les descendants, une tranche, un filtre, une expression régulière et une fonction. Une description en langage courant de ce que veut dire votre requête apparaît au-dessus d'eux.

  3. Lisez les correspondances avec leurs chemins

    Chaque résultat porte le chemin normalisé qui y a mené : vous voyez donc si une correspondance vient bien de là où vous l'attendiez. La ligne de statistiques indique si la requête est singulière — capable de sélectionner au plus un nœud —, ce que serait un JSON Pointer.

Questions fréquentes

Ma requête marche dans un autre outil mais pas ici.

Probablement une différence liée au RFC 9535. La norme a retiré des choses que les implémentations plus anciennes autorisaient : les expressions de script entre `()`, `$..[?(@.x)]` avec l'ancienne syntaxe de filtre parenthésée, et la comparaison avec une requête susceptible de sélectionner plusieurs nœuds — ce dernier cas est désormais une erreur de syntaxe plutôt qu'une supposition.

Pourquoi la même valeur apparaît-elle deux fois ?

Parce que le résultat est une liste de nœuds, pas un ensemble. `$..price` qui atteint le même nœud par deux branches le liste deux fois, à dessein — dédupliquer perdrait l'information sur la provenance de chaque correspondance.

Les expressions régulières de `match()` sont-elles standard ?

Pas exactement. Le RFC spécifie I-Regexp, un petit dialecte ; ici, les motifs sont confiés au moteur de votre propre navigateur, qui en accepte davantage. Un motif qui fonctionne ici peut être rejeté par une implémentation stricte — bon à savoir avant d'en mettre un en production.

Peut-il modifier le document ?

Non — JSONPath sélectionne, il n'écrit pas. Pour éditer, les chemins affichés ici sont des pointeurs RFC 6901 et peuvent aller directement dans un JSON Patch, que l'outil de diff JSON de ce site produit.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.