1. Introduction
JSON signifie JavaScript Object Notation. Ce format permet d’échanger des données entre des applications, des API, des services web ou des scripts.
Dans un BTS CIEL ou SIO, tu rencontres JSON partout :
- API REST
- fichiers de configuration
- Docker
- Node-RED
- applications web
- scripts Python
- MQTT
- Elasticsearch
- Kubernetes
- outils cloud
Aujourd’hui, JSON représente le format standard pour transmettre des données structurées sur le réseau.
L’objectif de cette fiche consiste à comprendre :
- la structure d’un fichier JSON ;
- la syntaxe ;
- les types de données ;
- la validation ;
- les outils d’analyse ;
- les erreurs fréquentes ;
- les usages concrets sous Linux et dans les infrastructures modernes.
2. Sommaire
- Introduction
- Sommaire
- Synthèse Markdown pour ta fiche bristol
- Comprendre le format JSON
- Structure d’un fichier JSON
- Types de données JSON
- Créer et lire un fichier JSON
- Validation et analyse JSON
- JSON et les API REST
- JSON dans les fichiers de configuration
- Commandes utiles et dépannage
- Logs et analyse des erreurs
- Bonnes pratiques de sécurité
- Erreurs fréquentes
- Conclusion
- Pour aller plus loin
- Liens utiles
- Propositions de TP
Synthèse Markdown pour ta fiche bristol
# JSON
## Structure de base
{
"nom": "serveur-web",
"port": 80,
"ssl": true
}
## Types disponibles
- string
- number
- boolean
- array
- object
- null
## Tableau JSON
{
"services": [
"apache2",
"mariadb",
"docker"
]
}
## Vérifier un JSON
jq . fichier.json
## Lire une clé avec jq
jq '.nom' fichier.json
## Formatter un JSON
python3 -m json.tool fichier.json
## Exemple API REST
curl http://api.exemple.local/data
## Emplacement fréquent
/etc/
/opt/
/var/lib/
/srv/
3. Comprendre le format JSON
JSON repose sur une structure simple composée :
- d’objets ;
- de tableaux ;
- de clés ;
- de valeurs.
Le format reste lisible par un humain tout en étant très simple à parser par une machine.
Exemple simple :
{
"hostname": "srv-web-01",
"ip": "192.168.1.10",
"ssh": true
}
Ici :
hostnamereprésente une chaîne de caractères ;ipcontient une adresse IP ;sshcontient une valeur booléenne.
JSON utilise :
- des accolades
{}pour les objets ; - des crochets
[]pour les tableaux.
4. Structure d’un fichier JSON
Arborescence typique :
config/
└── application.json
Exemple complet :
{
"serveur": {
"nom": "web01",
"adresse": "192.168.1.20",
"services": [
"nginx",
"php",
"mariadb"
]
}
}
Le fichier contient :
- un objet principal ;
- un sous-objet
serveur; - un tableau
services.
5. Types de données JSON
5.1 Chaîne de caractères
{
"nom": "debian"
}
5.2 Nombre
{
"port": 443
}
5.3 Booléen
{
"ssl": true
}
Valeurs possibles :
truefalse
5.4 Tableau
{
"dns": [
"1.1.1.1",
"8.8.8.8"
]
}
5.5 Objet
{
"reseau": {
"ip": "192.168.1.10",
"masque": "255.255.255.0"
}
}
5.6 Valeur null
{
"proxy": null
}
6. Créer et lire un fichier JSON
6.1 Création manuelle
Fichier :
/etc/app/config.json
Création :
sudo nano /etc/app/config.json
6.2 Exemple complet de configuration
{
"application": "supervision",
"version": "1.0",
"serveur": {
"host": "127.0.0.1",
"port": 8080
},
"authentification": {
"active": true,
"utilisateur": "admin"
},
"services": [
"mqtt",
"database",
"web"
]
}
6.3 Lecture avec jq
Installation :
sudo apt update
sudo apt install jq -y
Lecture complète :
jq . /etc/app/config.json
Le point . signifie :
- afficher tout le contenu JSON.
Lecture d’une clé :
jq '.serveur.port' /etc/app/config.json
Résultat :
8080
7. Validation et analyse JSON
JSON exige une syntaxe stricte.
Les erreurs les plus fréquentes :
- virgule oubliée ;
- guillemet manquant ;
- accolade non fermée ;
- commentaire ajouté ;
- mauvaise structure.
7.1 Validation avec jq
jq . fichier.json
Si le fichier contient une erreur :
parse error: Expected separator between values
7.2 Validation avec Python
python3 -m json.tool fichier.json
Cette commande :
- valide le JSON ;
- reformate le contenu.
8. JSON et les API REST
Les API REST utilisent très souvent JSON comme format d’échange.
Exemple :
curl http://192.168.1.50/api/users
Réponse :
[
{
"id": 1,
"nom": "alice"
},
{
"id": 2,
"nom": "bob"
}
]
Analyse avec jq
curl http://192.168.1.50/api/users | jq .
Extraire uniquement les noms :
curl http://192.168.1.50/api/users | jq '.[].nom'
9. JSON dans les fichiers de configuration
De nombreux outils utilisent JSON.
9.1 Docker
Fichier :
/etc/docker/daemon.json
Exemple :
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
9.2 VSCode
Fichier :
~/.config/Code/User/settings.json
9.3 Elasticsearch
Elasticsearch utilise massivement JSON pour :
- les requêtes ;
- les réponses ;
- les index.
10. Fichiers importants
/etc/docker/daemon.json
~/.config/Code/User/settings.json
/etc/app/config.json
/var/lib/
/srv/
/opt/
11. Commandes utiles et dépannage
Installer jq
sudo apt install jq -y
Options :
install: installe un paquet ;-y: accepte automatiquement la confirmation.
Vérifier un JSON
jq . fichier.json
Reformater un JSON
python3 -m json.tool fichier.json
Lire une clé
jq '.port' fichier.json
Lire un tableau
jq '.services[]' fichier.json
Lire une API REST
curl http://api.local/data | jq .
Vérifier la validité avec Node.js
node -e "JSON.parse(require('fs').readFileSync('fichier.json'))"
12. Logs et analyse des erreurs
JSON apparaît souvent dans les logs modernes.
Emplacements fréquents
/var/log/
/var/log/syslog
/var/log/nginx/
/var/log/apache2/
/var/log/docker.log
Exemple avec journalctl
journalctl -xe
Options :
-x: ajoute des explications ;-e: saute à la fin du journal.
Rechercher des erreurs JSON
grep -i json /var/log/syslog
Docker et logs JSON
Docker stocke souvent les logs en JSON.
Répertoire :
/var/lib/docker/containers/
Lecture :
jq . fichier.log
13. Bonnes pratiques de sécurité
Ne stocke jamais :
- des mots de passe en clair ;
- des tokens API ;
- des clés privées.
Évite les permissions trop ouvertes.
Mauvaise pratique :
chmod 777 config.json
Bonne pratique :
chmod 640 config.json
Limiter les accès :
chown root:app config.json
Si un service écoute sur le réseau via une API JSON, ouvre uniquement les ports nécessaires.
Exemple UFW :
sudo ufw allow 8080/tcp
Limiter à un sous-réseau :
sudo ufw allow from 192.168.1.0/24 to any port 8080 proto tcp
14. Erreurs fréquentes
Virgule finale interdite
Incorrect :
{
"port": 80,
}
Correct :
{
"port": 80
}
Commentaires interdits
Incorrect :
{
// commentaire
"port": 80
}
JSON n’accepte pas les commentaires.
Guillemets obligatoires
Incorrect :
{
port: 80
}
Correct :
{
"port": 80
}
15. Conclusion
JSON constitue aujourd’hui un format incontournable dans les infrastructures modernes.
Tu le retrouves dans :
- les API ;
- les applications web ;
- les outils cloud ;
- les conteneurs ;
- les scripts d’automatisation ;
- les outils DevOps.
Maîtriser JSON permet :
- d’automatiser des tâches ;
- d’interagir avec des API ;
- de comprendre les applications modernes ;
- de diagnostiquer des erreurs rapidement.
16. Pour aller plus loin
Tu peux approfondir :
- JSON Schema ;
- les API REST ;
- jq avancé ;
- Elasticsearch ;
- Docker ;
- Kubernetes ;
- Node-RED ;
- YAML ;
- sérialisation de données.
17. Liens vers les sites officiels, mooc et contenus pédagogiques
Documentation officielle JSON :
- https://www.json.org/json-fr.html
Présentation officielle du format JSON en français.
RFC officielle :
- https://datatracker.ietf.org/doc/html/rfc8259
Spécification officielle du format JSON.
Documentation jq :
- https://jqlang.github.io/jq/manual/
Documentation officielle de jq avec exemples avancés.
Documentation Python JSON :
- https://docs.python.org/fr/3/library/json.html
Module officiel Python pour manipuler JSON.
OpenClassrooms — Comprendre les API REST :
- https://openclassrooms.com/fr/courses/3449001-utilisez-des-api-rest-dans-vos-projets-web
Très bon cours pour comprendre JSON dans les API.
OpenClassrooms — Apprenez à programmer avec Python :
- https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python
Explique la manipulation JSON en Python.
Documentation Docker daemon.json :
- https://docs.docker.com/engine/daemon/
Configuration officielle Docker via JSON.
Documentation Debian jq :
- https://packages.debian.org/bookworm/jq
Paquet officiel Debian jq.
18. Propositions de TP pour s’exercer
TP 1 — Créer un fichier JSON de configuration
Objectif :
- créer un fichier JSON valide ;
- le vérifier avec jq.
TP 2 — Parser une API REST
Objectif :
- utiliser curl ;
- extraire des données avec jq.
TP 3 — Créer un inventaire réseau JSON
Créer un fichier contenant :
- hostname ;
- IP ;
- VLAN ;
- système ;
- services.
TP 4 — Développer un script Python JSON
Objectif :
- lire un fichier JSON ;
- modifier une valeur ;
- sauvegarder le résultat.
TP 5 — Déboguer un JSON cassé
Objectif :
- corriger plusieurs erreurs de syntaxe ;
- utiliser jq et python3 pour valider le fichier.
