Chercheur de chemin JSON : JSONPath et techniques de navigation
Maîtrisez JSONPath pour interroger et extraire des données de structures JSON complexes. Guide complet avec exemples pratiques et outils.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# Chercheur de chemin JSON : JSONPath et techniques de navigation
JSONPath est un langage de requête pour JSON, similaire à XPath pour XML. Ce guide vous apprend à naviguer efficacement dans les structures JSON complexes.
Qu'est-ce que JSONPath ?
JSONPath permet d'interroger des données JSON avec une syntaxe de chemin.
Syntaxe de base
\\\json
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"price": 22.99
}
]
}
}
\\\
Opérateurs JSONPath
$ - Racine
\\\
$.store.book
// Retourne tous les livres
\\\
. - Notation point
\\\
$.store.book[0].title
// "Sayings of the Century"
\\\
[] - Notation crochet
\\\
$['store']['book'][0]['title']
// Équivalent à la notation point
\\\
- Wildcard (tous)
\\\
$.store.book[].author
// Tous les auteurs
\\\
.. - Recherche récursive
\\\
$..price
// Tous les prix partout dans le document
\\\
[start:end] - Slice
\\\
$.store.book[0:2]
// Deux premiers livres
\\\
[?(@.price < 10)] - Filtre
\\\
$.store.book[?(@.price < 10)]
// Livres moins de 10€
\\\
Exemples pratiques
Données exemple
\\\json
{
"utilisateurs": [
{
"id": 1,
"nom": "Alice",
"age": 30,
"ville": "Paris",
"actif": true
},
{
"id": 2,
"nom": "Bob",
"age": 25,
"ville": "Lyon",
"actif": false
},
{
"id": 3,
"nom": "Charlie",
"age": 35,
"ville": "Paris",
"actif": true
}
]
}
\\\
Requêtes courantes
Tous les noms :\\\
$.utilisateurs[].nom
// ["Alice", "Bob", "Charlie"]
\\\
\\\
$.utilisateurs[?(@.actif == true)]
\\\
\\\
$.utilisateurs[?(@.age > 30)]
\\\
\\\
$.utilisateurs[?(@.ville == 'Paris')]
\\\
Implémentation JavaScript
Avec jsonpath-plus
\\\javascript
// npm install jsonpath-plus
import {JSONPath} from 'jsonpath-plus';
const data = {
utilisateurs: [
{nom: "Alice", age: 30, actif: true},
{nom: "Bob", age: 25, actif: false},
{nom: "Charlie", age: 35, actif: true}
]
};
// Tous les noms
const noms = JSONPath({path: '$.utilisateurs[].nom', json: data});
console.log(noms); // ["Alice", "Bob", "Charlie"]
// Utilisateurs actifs
const actifs = JSONPath({
path: '$.utilisateurs[?(@.actif == true)]',
json: data
});
// Avec filtre âge
const seniors = JSONPath({
path: '$.utilisateurs[?(@.age > 30)]',
json: data
});
\\\
Implémentation Python
Avec jsonpath-ng
\\\python
# pip install jsonpath-ng
from jsonpath_ng import jsonpath, parse
data = {
"utilisateurs": [
{"nom": "Alice", "age": 30, "actif": True},
{"nom": "Bob", "age": 25, "actif": False},
{"nom": "Charlie", "age": 35, "actif": True}
]
}
# Parser le chemin
jsonpath_expr = parse('$.utilisateurs[].nom')
# Extraire les valeurs
noms = [match.value for match in jsonpath_expr.find(data)]
print(noms) # ['Alice', 'Bob', 'Charlie']
\\\
Outils en ligne
JSONPath Online Evaluator
- URL : jsonpath.com
- Tester expressions JSONPath
- Visualisation résultats
JSONPath Finder
- URL : jsonpathfinder.com
- Cliquer pour obtenir le chemin
- Support multi-syntaxes
Expressions avancées
Opérateurs de comparaison
\\\
== Égal
!= Différent
< Inférieur
<= Inférieur ou égal
Supérieur
>= Supérieur ou égal
\\\
Opérateurs logiques
\\\
&& ET logique
|| OU logique
\\\
Exemples complexes
\\\
// Utilisateurs actifs ET > 25 ans
$.utilisateurs[?(@.actif == true && @.age > 25)]
// Paris OU Lyon
$.utilisateurs[?(@.ville == 'Paris' || @.ville == 'Lyon')]
// Nom commence par 'A'
$.utilisateurs[?(@.nom =~ /^A/)]
\\\
Fonctions JSONPath
length()
\\\
$.utilisateurs.length()
// Nombre d'utilisateurs
\\\
min() / max()
\\\
$.utilisateurs[].age.min()
$.utilisateurs[*].age.max()
\\\
Cas d'usage pratiques
API Response Navigation
\\\javascript
const response = {
status: "success",
data: {
users: [
{id: 1, profile: {name: "Alice"}},
{id: 2, profile: {name: "Bob"}}
]
}
};
// Extraire tous les noms
const names = JSONPath({
path: '$..profile.name',
json: response
});
// ["Alice", "Bob"]
\\\
Configuration Extraction
\\\javascript
const config = {
environments: {
dev: {database: {host: "localhost"}},
prod: {database: {host: "prod.server.com"}}
}
};
// Host de production
const prodHost = JSONPath({
path: '$.environments.prod.database.host',
json: config
});
\\\
Comparaison avec alternatives
Lodash get
\\\javascript
import _ from 'lodash';
// Lodash
_.get(data, 'users[0].name');
// JSONPath
JSONPath({path: '$.users[0].name', json: data});
\\\
Dot notation native
\\\javascript
// Native (simple)
data.users[0].name
// JSONPath (puissant)
$.users[?(@.age > 30)].name
\\\
Meilleures pratiques
Performance
Pour gros JSON :- Éviter
..(recherche récursive) - Chemins spécifiques plutôt que wildcards
- Considérer indexation si répétitif
Conclusion
JSONPath est essentiel pour :
- Navigation JSON complexe
- Extraction de données
- Requêtes dynamiques
- API data processing
- Syntaxe puissante et flexible
- Support multi-langages
- Filtrage et recherche avancés
- Outils en ligne disponibles
Maîtrisez JSONPath pour interroger JSON efficacement !
Articles Connexes
Meilleurs outils JSON en ligne 2026 : Validateurs, formateurs et éditeurs
Découvrez les meilleurs outils JSON en ligne pour valider, formater, convertir et éditer vos données JSON. Guide complet avec comparaisons et exemples pratiques.
Comprendre JSON Schema : Validation et documentation des données
Maîtrisez JSON Schema pour valider vos données JSON. Guide complet avec exemples pratiques, types, validations et outils pour créer des schémas robustes.
Travailler avec de gros fichiers JSON : Techniques et optimisations
Guide complet pour gérer efficacement de gros fichiers JSON : streaming, parsing incrémental, optimisations mémoire et performance.