À propos de cet outil
JSONPath est la façon dont la plupart des frameworks de test d’API extraient des valeurs d’une réponse : le JsonPath de REST Assured, les scripts Postman, Karate et de nombreuses bibliothèques d’assertions reposent sur les mêmes idées. Écrire l’expression sur une vraie réponse vous évite une série d’exécutions de test en échec. Ce testeur utilise jsonpath-plus avec l’évaluation de scripts désactivée, et évalue les expressions de filtre comme [?(@.price < 10)] avec un petit interpréteur intégré : rien de ce que vous collez n’est jamais exécuté comme du code. Chaque résultat est affiché avec son chemin normalisé, qui indique exactement d’où vient la valeur.
Mode d’emploi
- Collez une réponse JSON dans le panneau de gauche, ou cliquez sur « Load sample » (charger un exemple) pour le document classique de la librairie (bookstore).
- Tapez une expression commençant par $ ; les résultats se mettent à jour pendant la saisie.
- Choisissez d’afficher les valeurs, les chemins ou les deux, puis copiez le résultat.
- Utilisez les boutons « Try » (essayer) de l’aide-mémoire pour voir la descente récursive, les slices, les unions et les filtres en action.
FAQ : Testeur JSONPath
Pourquoi mon expression fonctionne-t-elle ici mais pas dans REST Assured ?
REST Assured utilise le GPath de Groovy, pas le JSONPath de Goessner. Le chemin « store.book.findAll { it.price < 10 }.title » en GPath équivaut ici à « $.store.book[?(@.price < 10)].title ». Les chemins pointés simples sont identiques dans les deux, mais les filtres et jokers utilisent une syntaxe différente.
Quelle syntaxe de filtre est prise en charge ?
Les filtres peuvent référencer l’élément courant (@) ou la racine ($), comparer avec == != < <= > >=, combiner avec && || et !, et utiliser des chaînes, nombres, true, false et null. Les expressions de script comme [(@.length-1)] et les appels de méthodes JavaScript ne sont volontairement pas exécutés ; utilisez la slice [-1:] pour le dernier élément.
Pourquoi n’ai-je aucun résultat alors que la clé existe ?
Les causes habituelles sont une différence de casse (userId contre userid), un [*] manquant quand la valeur est dans un tableau, ou une clé contenant un tiret ou un espace qui exige la notation entre crochets, comme $['first-name'].