JSONPath Tester

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
JSON
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand JSONPath Tester

JSONPath est un langage de requête pour JSON, et ce testeur exécute une expression sur vos données et renvoie chaque valeur qu'elle sélectionne.

How it works

Une expression part de $, la racine du document, et chaque étape restreint l'ensemble des valeurs transmises : .name et ['name'] prennent une clé, [2] prend un élément de tableau et un index négatif compte depuis la fin, * prend tous les enfants, ..name cherche cette clé à tous les niveaux, et [?(@.price < 10)] conserve les éléments de tableau dont le champ satisfait la comparaison. Le résultat est toujours une liste, et une liste vide est une réponse valide plutôt qu'une erreur.

When to use it

  • Extraire un champ d'une réponse d'API profondément imbriquée sans écrire le parcours à la main.
  • Trouver la bonne expression avant de la placer dans un fichier de configuration — Kubernetes, Jenkins, les tests Postman et de nombreux outils de journalisation acceptent JSONPath.
  • Compter combien d'éléments d'une réponse satisfont une condition.
  • Trouver chaque occurrence d'une clé quand vous ignorez où elle se trouve dans le document.

Watch out for

  • Un filtre ne prend qu'une seule comparaison. [?(@.price < 10 && @.stock > 0)] n'est pas pris en charge, et les filtres s'appliquent aux tableaux — en exécuter un sur un objet ne sélectionne rien.
  • La syntaxe de tranche n'est pas prise en charge et échoue discrètement plutôt que bruyamment : [0:2] est lu comme l'index 0 et renvoie un seul élément.
  • La descente récursive trouve plus que prévu. $..id renvoie chaque id à chaque profondeur, y compris ceux nichés dans des objets sans rapport, dans l'ordre du document.
  • JSONPath n'a eu aucune norme formelle jusqu'à la RFC 9535 en 2024, si bien que les implémentations divergent sur les cas limites. Une expression qui fonctionne ici peut se comporter autrement dans Jayway, jsonpath-plus ou le champ de requête d'un fournisseur de cloud — testez-la là où elle s'exécutera réellement.

Not the right tool for: Transformer des données. JSONPath sélectionne des valeurs ; les remodeler en un nouveau document, c'est le rôle de jq et de JMESPath.

Frequently Asked Questions

Quelle est la différence entre $.store.book[*].title et $..title ?

$.store.book[*].title parcourt un chemin précis et récupère les titres du tableau book. $..title utilise la descente récursive (..) pour trouver TOUTES les clés « title » n'importe où dans le document, à n'importe quel niveau d'imbrication. La descente récursive est puissante, mais peut renvoyer des résultats inattendus dans des documents complexes.

Comment fonctionnent les expressions de filtre ?

Les expressions de filtre utilisent la syntaxe [?(@.clé opérateur valeur)] : $..book[?(@.price < 10)] trouve tous les livres dont le prix est inférieur à 10. Opérateurs : == != < <= > >=. Le symbole @ désigne l'élément en cours d'évaluation.

JSONPath est-il normalisé ?

JSONPath a été proposé par Stefan Goessner en 2007 mais n'a eu aucune norme formelle jusqu'à la RFC 9535 (2024). Les implémentations présentent de subtiles différences. Cet outil met en œuvre le sous-ensemble Goessner commun, compatible avec la plupart des bibliothèques (jsonpath-plus, Jayway, json-path).

How to Use JSONPath Tester

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.