Interroger et extraire données JSON utilisant expressions JSONPath
Fonctionnalités
- Syntaxe Requête Avancée: Supporter syntaxe JSONPath complète incluant caractères génériques (*), descente récursive (..), découpage tableaux ([Démarrer:end]), filtres ([?(@.price < 10)]), sélecteurs chemins multiples
- Modèles Expression Chemin: Modèles pré-construits pour requêtes courantes: accès racine ($), enfant direct ($.key), éléments tableau ($.arr[*]), éléments filtrés ($.arr[?(@.id)]), recherche récursive ($..key)
- Aperçu Temps Réel: Exécuter requêtes instantanément avec entrée et sortie JSON Couleurées syntaxe, afficher chemins correspondants, nombre résultats, surligner nœuds correspondants dans JSON source
- Export Résultats: Exporter résultats requête JSON (tableau ou valeur unique), CSV pour données tabulaires, texte Formaté avec options copie et téléchargement un clic
Guide d'utilisation
- Entrer Données JSON: Coller ou télécharger données JSON que vous souhaitez interroger
- Écrire JSONPath: Entrer expression JSONPath ou utiliser modèles pour motifs courants
- Exécuter Requête: Exécuter requête pour voir résultats correspondants avec coloration syntaxique
- Exporter Résultats: Copier ou télécharger données extraites dans Format préféré
Détails techniques
Syntaxe JSONPath
Les expressions JSONPath commencent par $ (objet racine) et utilisent notation Point ($.property) ou notation crochets ($['property']) pour accès. Nœuds enfants utilisent séparateur . ($.store.book), tableaux utilisent [index] ou [*] pour tous éléments. Découpage tableaux [Démarrer:end:Étape] extrait plages comme [0:3] (3 premiers éléments) ou [-1] (dernier élément). Opérateur descente récursive .. recherche tous niveaux: $..author trouve toutes propriétés author quelle que soit profondeur imbrication. Opérateur union [,] sélectionne plusieurs éléments: $[0,2,5] obtient indices tableaux spécifiques.
Expressions Filtre
Filtres utilisent syntaxe [?(@.condition)] pour sélectionner éléments correspondant critères. @ représente nœud actuel dans itération. Opérateurs comparaison: ==, !=, <, <=, >, >=. Opérateurs logiques: && (et), || (ou), ! (non). Exemples: [?(@.price < 10)] sélectionne éléments avec prix sous 10; [?(@.Catégorie == 'fiction' && @.price < 20)] combine conditions. Correspondance expression régulière: [?(@.Nom =~ /pattern/)] filtre par regex. Filtres peuvent référencer racine avec $ pour comparaisons à travers hiérarchie: [?(@.price < $.maxPrice)].
Variantes Implémentation
JSONPath a plusieurs implémentations avec légères variations syntaxe: Original Goessner (JavaScript), Jayway (Java), jsonpath-ng (Python). Différences incluent opérateurs filtre (certains utilisent @ vs $), Support regex, expressions script, extensions fonctions. Certaines implémentations ajoutent fonctions comme @.length, @.min(), @.max() pour agrégation. Expressions script [(@.price * @.quantity)] permettent calculs. Opérateur parent ^ et chemin actuel ~ fournissent contexte. Toujours vérifier Documentation implémentation cible pour fonctionnalités Supportées et particularités syntaxe.
Questions fréquentes
- Pourquoi aucun résultat n'est retourné ?
- Vérifiez que le chemin commence par $, que les indices de tableau sont valides et que les noms correspondent exactement. Testez d'abord avec un chemin Simple.
- Commentaire chercher une clé à n'importe quelle profondeur ?
- Utilisez la descente récursive : $..author trouve author à tous les niveaux.
- Commentaire écrire un filtre ?
- Utilisez [?(@.price < 10)]. @ représente l'élément courant. Combinez des conditions avec && et ||.
- Différence entre résultat vide et null ?
- Vide signifie aucune correspondance ; null signifie que la valeur trouvée est null. Vérifiez les données source et l'expression.
- Conseils de performance pour gros JSON ?
- Évitez d'abuser de .. ; restreignez d'abord, puis filtrez. Envisagez le streaming ou un traitement côté serveur.
Documentation connexe
- Spécification JSONPath - Goessner - Proposition originale JSONPath et définition syntaxe
- Évaluateur en Ligne JSONPath - Testeur JSONPath interactif avec Documentation expressions
- RFC 9535 - Standard JSONPath - Effort standardisation IETF pour langage requête JSONPath
- Documentation jsonpath-ng - Implémentation Python JSONPath avec fonctionnalités étendues
- Jayway JSONPath (Java) - Implémentation Java populaire avec expressions filtre