Testeur JSONPath

Interrogez le JSON collé avec des sélecteurs et des filtres de comparaison simples, puis consultez chaque valeur trouvée et son chemin. La syntaxe non prise en charge est refusée ; aucune expression JavaScript n’est exécutée.

Fonctionne localement dans votre navigateur
Document JSON
Expression de requête

Prend en charge les noms, la notation entre crochets, les index, les caractères génériques, les unions, les tranches, les sélecteurs descendants et les filtres de comparaison simples.

L'analyse des requêtes principales est effectuée localement. Les formes d'expression non prises en charge renvoient une erreur claire plutôt que de revenir à eval().

Matchs
Exécutez une expression JSONPath pour inspecter les valeurs correspondantes.

Comment exécuter une requête JSONPath

Collez un document JSON, saisissez une expression JSONPath et lisez chaque correspondance sous forme de chemin normalisé accompagné de sa valeur. La requête s'exécute sur le texte de cet onglet : rien n'est envoyé et aucune requête ne quitte la page.

L'analyseur est propre à cet outil et n'a jamais recours à eval(). La syntaxe qu'il ne prend pas en charge s'arrête sur un message explicite : les filtres combinés avec &&, || ou ! sont refusés, tout comme la comparaison d'un filtre avec la racine du document.

  1. Collez le document dans Document JSON ou cliquez sur Charger un exemple pour partir de l'exemple de la librairie.
  2. Saisissez l'expression dans Expression de requête. Les quatre exemples au-dessus des boutons ($.store.book[*].author, $..price, $.store.book[?(@.price < 10)] et $.store.book[0:2]) remplissent le champ et s'exécutent aussitôt si un document est déjà chargé.
  3. Cliquez sur Exécuter une requête. La carte Matchs liste une entrée par nœud : le chemin normalisé à gauche, la valeur JSON à droite.
  4. Cliquez sur Copier le résultat JSON pour récupérer les valeurs trouvées sous forme d'un seul tableau JSON, ou sur Effacer pour vider le document et revenir à l'état initial.

Ce que ce testeur JSONPath prend en charge

Les sélecteurs pris en charge

Noms, noms entre crochets et index : $.store.book, $["store"]["book"], $['store']['bicycle'], [0], [-1] pour le dernier élément et les unions comme [0,1] ou ['a','b']. Un nom sans crochets commence par une lettre, un souligné ou $, puis accepte lettres, chiffres, souligné, $ ou tiret ; une clé contenant un point ou une espace doit passer par les crochets.

Caractères génériques, tranches et descendants : $.store.*, $..price, [0:2], [::2], [::-1]. Les tranches suivent les mêmes bornes qu'en Python : une borne négative compte depuis la fin et un pas négatif parcourt à l'envers.

Filtres : une comparaison par crochet

Un filtre évalue une seule comparaison et accepte ==, !=, <, <=, > et >= face à un nombre, une chaîne entre guillemets, true, false ou null : [?(@.price < 10)] ou [?(@.title == "Moby Dick")]. Un filtre sans opérateur conserve les nœuds où la propriété existe et est vraie : [?(@.isbn)].

Ce que l'analyseur ne sait pas évaluer est refusé plutôt que deviné : [?(@.price > 1 && @.price < 10)] indique que les filtres combinés ne sont pas pris en charge, [?(@.price > $.expensive)] qu'un filtre ne peut pas être comparé à la racine, et une expression régulière comme =~ /a/ que l'expression de filtre n'est pas prise en charge.

Chemins, copie et documents volumineux

Chaque correspondance annonce son chemin sous une forme unique, $["store"]["book"][0]["author"], quelle que soit la notation utilisée dans la requête, et un même nœud n'apparaît jamais deux fois. Copier le résultat JSON renvoie les valeurs trouvées sous forme d'un tableau JSON, prêt pour un fixture ou un diff.

La carte Matchs affiche les 200 premiers résultats et précise combien sont omis ; le bouton de copie fournit toujours le tableau complet. Un document de 50 000 nœuds répond à une requête générique en moins d'une seconde, et les documents très imbriqués sont parcourus sans dépassement de pile.

Outils récents :