Passer au contenu principal

JSON Path Tester

Un outil pour tester les expressions JSONPath et extraire les valeurs souhaitées des données JSON. Un outil essentiel pour l'analyse des réponses API et l'analyse de données !

Result will appear here...

Common Patterns

Root
$
Root object
All Books
$.store.book[*]
All books in store
First Book
$.store.book[0]
First book
Last Book
$.store.book[-1]
Last book
Book Titles
$.store.book[*].title
All book titles
Books < $10
$.store.book[?(@.price < 10)]
Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]
Books with ISBN
All Prices
$.store..price
All prices (recursive)

Syntax Guide:

  • $ - Root object
  • @ - Current object
  • . or [] - Child operator
  • .. - Recursive descent
  • * - Wildcard
  • [start:end] - Array slice
  • [?(<expr>)] - Filter expression

Qu'est-ce que JSONPath ?

JSONPath est un langage d'expression pour interroger des valeurs dans les structures de données JSON. Tout comme XPath le fait pour XML, JSONPath vous permet d'extraire des données spécifiques de JSON.

Syntaxe principale

Opérateurs de base

OpérateurDescriptionExemple
$Objet racine$
@Objet actuel (dans un filtre)@.price
. ou []Élément enfant$.store.book
..Recherche récursive$..price
*Caractère générique$.store.*
[n]Index de tableau$.store.book[0]
[start:end]Tranche de tableau$.store.book[0:2]
[?(<expr>)]Expression de filtre$..book[?(@.price < 10)]

Indexation de tableau

// Premier élément
$.store.book[0]

// Dernier élément
$.store.book[-1]

// Plage (de 0 à avant l'index 2)
$.store.book[0:2]

// Tous les éléments
$.store.book[*]

Expressions de filtre

// Livres avec un prix inférieur à 10
$.store.book[?(@.price < 10)]

// Livres qui ont un ISBN
$.store.book[?(@.isbn)]

// Livres de catégorie fiction
$.store.book[?(@.category === 'fiction')]

// Livres avec un mot spécifique dans le titre
$.store.book[?(@.title.includes('Moby'))]

Exemples pratiques

Extraction de données à partir d'une réponse API

// Réponse API
{
"users": [
{ "id": 1, "name": "John", "active": true },
{ "id": 2, "name": "Jane", "active": false },
{ "id": 3, "name": "Bob", "active": true }
]
}

// Extraire uniquement les utilisateurs actifs
$.users[?(@.active === true)]

// Tous les noms d'utilisateurs
$.users[*].name
// JSON complexe
{
"company": {
"departments": [
{
"name": "Engineering",
"employees": [
{ "name": "Alice", "salary": 100000 },
{ "name": "Bob", "salary": 90000 }
]
},
{
"name": "Sales",
"employees": [
{ "name": "Charlie", "salary": 80000 }
]
}
]
}
}

// Tous les salaires des employés
$..employees[*].salary

// Employés avec un salaire >= 90000
$..employees[?(@.salary >= 90000)]

Traitement des données de tableau

// Données e-commerce
{
"products": [
{ "name": "Laptop", "price": 1000, "stock": 5 },
{ "name": "Mouse", "price": 20, "stock": 0 },
{ "name": "Keyboard", "price": 50, "stock": 10 }
]
}

// Produits en stock
$.products[?(@.stock > 0)]

// Plage de prix (20 ~ 100)
$.products[?(@.price >= 20 && @.price <= 100)]

Cas d'utilisation

1. Test et débogage d'API

// Extraire les messages d'erreur de la réponse GraphQL
$.errors[*].message

// Données de pagination API REST
$.data.items[*]

2. Analyse de données

// Filtrer les données selon des conditions spécifiques
$..transactions[?(@.amount > 1000)]

// Collecter des données statistiques
$..metrics[*].value

3. Analyse de fichiers de configuration

// Extraire une configuration d'environnement spécifique
$.environments[?(@.name === 'production')]

// Indicateurs de fonctionnalités activées
$.features[?(@.enabled === true)].name

4. Analyse de journaux

// Filtrer uniquement les journaux d'erreur
$.logs[?(@.level === 'error')]

// Journaux dans une plage horaire spécifique
$.logs[?(@.timestamp > 1234567890)]

Opérateurs de comparaison

Opérateurs disponibles dans les filtres JSONPath :

  • === - Égal
  • !== - Différent
  • < - Inférieur à
  • <= - Inférieur ou égal
  • > - Supérieur à
  • >= - Supérieur ou égal
  • && - ET
  • || - OU

Conseils d'utilisation

1. Test étape par étape

Testez les chemins complexes en les décomposant :

// Étape 1 : $.store
// Étape 2 : $.store.book
// Étape 3 : $.store.book[*]
// Étape 4 : $.store.book[*].title

2. Utilisation de la recherche récursive

Utilisez .. lorsque la structure est inconnue :

// Trouver tous les champs price
$..price

3. Combinaison de filtres

Combinez plusieurs conditions :

$..book[?(@.price < 10 && @.category === 'fiction')]

Notes importantes

  • Les expressions JSONPath sont sensibles à la casse
  • Utilisez @ pour référencer l'objet actuel dans les expressions de filtre
  • Le découpage de tableau fonctionne de manière similaire à Python (début inclusif, fin exclusive)
  • La syntaxe peut varier légèrement entre les différentes implémentations

Outils connexes

Ressources supplémentaires