Extracteur JSONPath, gratuit

Collez du JSON et entrez une expression de chemin comme $.store.book[0].title pour extraire des valeurs.

Résultat

Entrez du JSON et un chemin, puis cliquez sur Extraire.

Comment ça marche

  1. Collez votre JSON : saisissez un objet ou un tableau JSON dans le champ d'entrée.
  2. Entrez une expression JSONPath : tapez un chemin comme $.store.book[*].author ou $.users[?(@.age > 18)] pour sélectionner les données voulues.
  3. Visualisez les résultats extraits : les valeurs correspondantes apparaissent instantanément dans le panneau de sortie. Copiez le résultat ou exportez-le.

Pourquoi utiliser l'extracteur JSONPath ?

Quand vous travaillez avec des réponses d'API complexes ou du JSON profondément imbriqué, extraire des valeurs spécifiques à la main est lent et source d'erreurs. JSONPath est le langage de requête pour JSON, semblable à XPath pour XML. Il permet de cibler exactement les données dont vous avez besoin à l'aide d'une expression de chemin concise, qu'il s'agisse d'une valeur imbriquée unique, de tous les éléments d'un tableau ou d'enregistrements filtrés correspondant à une condition. Cet outil rend l'exploration JSONPath interactive sans écrire de code.

Fonctionnalités

Questions fréquentes

Qu'est-ce que JSONPath ?

JSONPath est un langage de requête pour documents JSON, analogue à XPath pour XML. Un chemin comme $.users[*].name sélectionne le champ name de chaque objet dans le tableau users. Il est largement utilisé pour le test d'API, la transformation de données et le traitement JSON.

Comment filtrer les éléments d'un tableau par une condition ?

Utilisez une expression de filtre : $.items[?(@.price < 50)] renvoie tous les éléments dont le prix est inférieur à 50. Le symbole @ fait référence à l'élément en cours d'évaluation.

Prend-il en charge la recherche récursive ?

Oui. L'opérateur .. effectue une recherche récursive à tous les niveaux. Par exemple, $..name trouve toutes les clés name où qu'elles soient dans la structure JSON, quelle que soit la profondeur d'imbrication.

D'un article de blog à RFC 9535 : la route de 17 ans vers un standard JSONPath

Stefan Gössner a proposé JSONPath dans un seul article de blog en février 2007, adaptant l'idée XPath au JSON. Il a publié une implémentation JavaScript de référence, esquissé la syntaxe (la racine $, les opérateurs enfant point et crochet, .. pour la descente récursive, * pour le joker, [début:fin:pas] pour le découpage de tableau, [?(...)] pour les expressions de filtre) et l'écosystème plus large a suivi. Les implémentations ont proliféré : jsonpath pour JavaScript, JsonPath pour Java, jq (Stephen Dolan, 2012) qui est apparenté à JSONPath mais sa propre chose, jsonpath-ng pour Python, JMESPath (AWS, 2014) comme rival plus strict. Le problème : chaque implémentation a dérivé. La syntaxe de filtre, la sémantique de récursion, la correspondance regex, les identifiants racine, tous subtilement différents selon les bibliothèques. Une étude comparative de 2023 par Carsten Bormann et al. a testé 41 implémentations JSONPath distinctes contre la même entrée et obtenu 41 ensembles de résultats différents pour la même expression. Le groupe de travail JSONPath de l'IETF s'est réuni en 2020 pour corriger cela. RFC 9535 «JSONPath: Query Expressions for JSON» a été publié en février 2024, devenant le premier standard formel pour JSONPath, 17 ans après le post original de Gössner. RFC 9535 codifie la syntaxe, définit un format de sortie normalisé, exige la normalisation Unicode pour les comparaisons de chaînes, et ajoute une suite de tests de conformité.

Aide-mémoire de syntaxe JSONPath

Les sept opérateurs qui couvrent la plupart des requêtes du monde réel :

Où vous saisissez vraiment JSONPath

Erreurs qui mordent

JSONPath vs jq vs JMESPath vs JSON Pointer

Plus de questions fréquentes

JSONPath est-il identique à XPath ?

Inspiré par lui, pas identique. XPath a été finalisé par le W3C en 1999 pour XML, JSONPath a été esquissé par Gössner en 2007 pour apporter la même idée à JSON. Les plus grandes différences : JSONPath utilise . et [] au lieu de /, JSONPath n'a aucun concept de namespaces ou d'attributs XML, JSONPath a été standardisé bien plus tard (2024 vs 1999), donc pendant des années c'était une syntaxe de facto avec de nombreuses implémentations incompatibles.

Pourquoi le même JSONPath donne-t-il des résultats différents dans différents outils ?

Parce que JSONPath n'a pas été standardisé jusqu'à RFC 9535 (février 2024). Avant cela, chaque implémentation faisait ses propres choix concernant la syntaxe de filtre, le support regex, les identifiants racine, les règles d'échappement, et les cas limites (tableaux vides, clés manquantes, coercition de type dans les filtres). Une étude du groupe de travail IETF de 2023 a testé 41 implémentations sur la même entrée et obtenu 41 ensembles de résultats différents. RFC 9535 corrige cela pour les bibliothèques nouvelles et mises à jour ; les anciennes bibliothèques divergeront jusqu'à ce qu'elles migrent. Vérifiez toujours si votre bibliothèque revendique «conformité RFC 9535».

Puis-je modifier le JSON avec JSONPath, ou seulement lire ?

RFC 9535 définit strictement JSONPath comme un langage de requête : il retourne des valeurs d'un document, il ne mute pas. Pour modifier le JSON, utilisez JSON Patch (RFC 6902), qui utilise les chemins JSON Pointer et les opérations add/remove/replace/copy/move/test. Certaines bibliothèques combinent les deux (par ex. jsonpath-plus en JavaScript a une extension de mutation apply()) mais ce n'est pas du JSONPath standard.

JSONPath supporte-t-il les expressions régulières dans les filtres ?

RFC 9535 a ajouté deux fonctions regex : match(node, regex) correspond à toute la chaîne, search(node, regex) correspond à n'importe quel sous-chaîne. Exemple : $.book[?(match(@.isbn, "^978-"))]. La saveur regex est I-Regexp (RFC 9485, un profil de regex XML Schema), pas PCRE ou regex JavaScript. Les anciennes bibliothèques utilisaient la saveur regex de leur langue hôte, ce qui rend les requêtes regex particulièrement non portables.

Mon JSON est-il envoyé quelque part quand j'utilise cet outil ?

Non. L'évaluation du chemin s'exécute entièrement dans le moteur JavaScript de votre navigateur. Ouvrez l'onglet Réseau dans DevTools et exécutez une requête, vous verrez zéro requête sortante pendant l'évaluation. Sûr pour les réponses API avec secrets, les dumps de base de données avec PII, ou les fichiers de configuration contenant des identifiants.

Outils associés

Visualiseur d'arbre JSON, gratuit Formatage et validation JSON en ligne, gratuits Convertisseur JSON → CSV, gratuit Comparateur JSON, gratuit