Testeur JSONPath

Collez un document JSON et saisissez une requête JSONPath. Vous obtenez le nombre de résultats et, pour chacun, son chemin normalisé et sa valeur. La requête s'exécute dans votre navigateur, et rien n'est envoyé.

Gratuit Fonctionne dans votre navigateur Vérifié le mardi 10 novembre 2026

Le texte doit être du JSON valide. L'exemple est le document de librairie de la RFC 9535, section 1.5.

Elle commence par $, la racine. Les filtres utilisent @ pour l'élément testé, comme dans [[email protected] < 10]. Les espaces au début et à la fin sont ignorés.

Résultat

Résultats — Le nombre de nœuds sélectionnés par la requête. Un nœud peut être sélectionné plusieurs fois lorsque la requête le répète.
Résultats, dans l'ordre

Cet outil fonctionne dans votre navigateur. Ce que vous saisissez ne nous est pas envoyé.

Mode d'emploi

  1. Collez le document JSON dans Document JSON. Utilisez l'exemple pour essayer l'outil d'abord.
  2. Saisissez la Requête JSONPath dans le champ situé en dessous, en commençant par $. Les filtres se mettent entre crochets : [[email protected] < 10].
  3. Lisez le nombre Résultats, puis le tableau Résultats, dans l'ordre : chaque ligne donne le chemin d'un résultat et sa valeur.
  4. Si un message indique la position d'un problème, regardez ce caractère de la requête et corrigez les crochets, les guillemets ou les points.

Comment une requête sélectionne les nœuds

Une requête est une liste de segments après $. Un segment enfant, comme .store ou [0], sélectionne les enfants de chaque nœud atteint, et un segment de descendance, comme ..author, visite le nœud et tous ses descendants avant de sélectionner. Les nœuds d'un segment viennent dans l'ordre de l'entrée, et un tableau est toujours lu dans son ordre (RFC 9535, sections 2.5 et 2.5.2.2).

Un sélecteur de nom ne correspond qu'à un membre portant exactement ce nom, et seulement dans un objet. Un indice négatif compte depuis la fin du tableau : -1 est le dernier élément. Une tranche comme [1:5:2] prend le début, la fin et le pas, et un pas de 0 ne sélectionne rien (section 2.3.4.2).

Filtres, fonctions et ce que l'outil refuse

Un filtre [?…] teste chaque enfant d'un tableau ou d'un objet. Les comparaisons utilisent ==, !=, <, <=, > et >= ; &&, || et ! combinent les tests, et les parenthèses les regroupent. Un membre absent vaut Nothing, et deux Nothing sont égaux. Les nombres se comparent aux nombres, les textes aux textes, et une valeur d'un type n'est jamais égale à une valeur d'un autre type (section 2.3.5.2).

Les fonctions length, count, value, match et search sont prises en charge comme les définit la RFC 9535. match et search prennent une expression régulière écrite en I-Regexp, le format de la RFC 9485 ; un motif qui n'est pas de l'I-Regexp valide ne correspond à rien. Les littéraux de tableau et d'objet ne font pas partie de la grammaire : l'outil les refuse, et il refuse aussi un résultat de fonction utilisé seul dans un filtre, car la RFC 9535 dit que ce n'est pas bien typé.

L'exemple de la librairie

Avec le document d'exemple et la requête $.store.book[[email protected] < 10].title, les livres à moins de 10 sont le premier et le troisième. Leurs titres sont les deux résultats ci-dessous, avec le chemin normalisé de chacun.

Chemin normalisé Valeur (JSON)
$['store']['book'][0]['title'] "Sayings of the Century"
$['store']['book'][2]['title'] "Moby Dick"

Questions fréquentes

Pourquoi une requête ne renvoie-t-elle rien alors que la clé existe ?

Un sélecteur de nom ne correspond qu'à un membre d'un objet portant exactement ce nom, et la comparaison est sensible à la casse. Il ne correspond jamais à un élément de tableau : utilisez un indice ou un joker pour un tableau.

Pourquoi 13 et "13" ne sont-ils pas égaux dans un filtre ?

La RFC 9535 compare des valeurs de types différents comme non égales (section 2.3.5.3). Un nombre et un texte sont des valeurs différentes : == est donc faux et != vrai, même si les caractères se ressemblent.

Que sélectionne un indice négatif ?

Un indice négatif compte depuis la fin du tableau : -1 est le dernier élément, et -2 celui qui le précède. Un indice hors du tableau ne sélectionne rien et n'est pas une erreur (section 2.3.3.2).

Pourquoi l'outil refuse-t-il length(@) lorsqu'il est seul dans un filtre ?

length renvoie un nombre, et un filtre a besoin d'un test vrai ou faux. Comparez le résultat, comme dans [?length(@.title) > 15], qui est bien typé.

L'outil envoie-t-il mon JSON à un serveur ?

Non. Le document est lu par votre navigateur avec JSON.parse, la requête s'y exécute aussi, et rien n'est stocké. La page n'effectue aucune requête réseau.

Sources

Chiffres et texte vérifiés pour la dernière fois le mardi 10 novembre 2026.

Nous utilisons des cookies nécessaires au fonctionnement du site. Avec votre accord, Google utilise aussi des cookies publicitaires pour afficher des annonces personnalisées. Si vous les refusez, vous voyez toujours des annonces, mais elles ne sont pas personnalisées.