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[*].titleAll book titles
Books < $10
$.store.book[?(@.price < 10)]Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]Books with ISBN
All Prices
$.store..priceAll 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érateur | Description | Exemple |
|---|---|---|
$ | 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
Navigation dans les données imbriquées
// 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
- JSON Formatter - Formatage JSON
- API Tester - Test d'API
- Regex Tester - Test d'expressions régulières
Ressources supplémentaires
- Documentation officielle JSONPath
- JSONPath Plus - Bibliothèque utilisée