Testeur JSONPath

Collez un document JSON et tapez une expression JSONPath comme $..book[?(@.price<10)]. Le testeur l’évalue par rapport au document et affiche chaque valeur correspondante, avec le chemin exact de chaque correspondance. Utile pour valider la requête que vous êtes sur le point de coller dans un script ou une spécification API (Postman, k6, JMeter parlent tous JSONPath).

Comment tester une expression JSONPath

  1. 1

    Collez le document JSON

    Tout JSON valide, objet, tableau, profondément imbriqué.

  2. 2

    Tapez l'expression

    Commencez par `$` pour la racine. Utilisez `.` pour l'enfant, `..` pour la descente récursive, `[*]` pour le joker.

  3. 3

    Voir les correspondances en direct

    Chaque correspondance est affichée avec sa valeur et son JSONPath complet, mis en évidence dans le document original.

  4. 4

    Copiez les résultats

    Copiez les correspondances sous forme de tableau JSON, ou copiez chaque chemin individuel pour une utilisation dans le code en aval.

Référence de syntaxe JSONPath

Expression Signification
$ Élément racine
$.store Enfant de $ nommé store
$["store"] Même chose, forme entre crochets
$..author Toutes les propriétés author à n’importe quelle profondeur
$.store.book[*] Chaque livre dans le magasin
$.store.book[0] Premier livre
$.store.book[-1:] Dernier livre
$.store.book[0:2] Les deux premiers livres (tranche)
$.store.book[?(@.isbn)] Livres avec une propriété isbn
$.store.book[?(@.price < 10)] Livres moins chers que 10
$.store.book[?(@.category == "fiction")] Livres de fiction
$..* Chaque valeur, partout

Expressions de filtre

Les expressions de filtre utilisent @ pour faire référence au nœud actuel. Le testeur prend en charge les opérateurs courants ==, !=, <, >, <=, >=, &&, ||, et regex =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Dialectes JSONPath

Il existe plusieurs implémentations JSONPath avec de petites incompatibilités. Ce testeur suit la spécification originale de Goessner et les raffinements de RFC 9535, qui sont compatibles avec :

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • les expressions de chemin de base de jq

Les fonctionnalités incompatibles (comme les expressions de script avec JS arbitraire) sont signalées dans le panneau d’erreur.

Quand JSONPath surpasse un parseur complet

  • Assertions de test : pm.expect(jsonData).to.have.jsonPath(...) de Postman prend un chemin.
  • Extraction de configuration : extraire une valeur d’une énorme réponse API sans bibliothèque.
  • Scripts de test de charge : k6, JMeter et Gatling prennent tous en charge JSONPath pour les vérifications.
  • Kubernetes / AWS CLI : les drapeaux --query et --jsonpath vous permettent de façonner la sortie depuis la ligne de commande.

Erreurs courantes

  • Utiliser . sur un tableau. $.users.0.name est incorrect ; utilisez $.users[0].name.
  • Oublier .. pour la profondeur. Un chemin comme $.name ne correspond qu’au name de premier niveau ; utilisez $..name pour tous.
  • Confondre JSONPath avec jq. jq est un sur-ensemble avec contrôle de flux et transformations ; JSONPath est uniquement pour l’extraction.
  • Ancrage regex. =~ /foo/ correspond aux sous-chaînes ; utilisez /^foo$/ pour un comportement de correspondance exacte.

Questions fréquentes

JSONPath est un langage d’extraction pur, sélectionner, filtrer, trancher. jq est un langage de requête / transformation complet avec contrôle de flux, variables et fonctions. Pour une extraction simple, JSONPath est plus portable ; pour les transformations, utilisez jq.

La spécification originale de Goessner plus les raffinements de RFC 9535, correspondant à Jayway JsonPath (Java) et jsonpath-plus (Node). Les extensions spécifiques au dialecte (expressions de script avec code arbitraire) ne sont pas prises en charge.

Oui. $..book[?(@.title =~ /^Harry.*/)] correspond à tous les livres dont le titre commence par “Harry”. Utilisez ^ et $ pour un comportement de correspondance complète.

Oui. Tant le JSON que l’évaluateur JSONPath vivent dans votre navigateur. Votre document et vos requêtes ne quittent jamais l’onglet.

Outils similaires

Outil disponible dans d’autres langues