Fiche json

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

  1. Introduction
  2. Sommaire
  3. Synthèse Markdown pour ta fiche bristol
  4. Comprendre le format JSON
  5. Structure d’un fichier JSON
  6. Types de données JSON
  7. Créer et lire un fichier JSON
  8. Validation et analyse JSON
  9. JSON et les API REST
  10. JSON dans les fichiers de configuration
  11. Commandes utiles et dépannage
  12. Logs et analyse des erreurs
  13. Bonnes pratiques de sécurité
  14. Erreurs fréquentes
  15. Conclusion
  16. Pour aller plus loin
  17. Liens utiles
  18. 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 :

  • hostname représente une chaîne de caractères ;
  • ip contient une adresse IP ;
  • ssh contient 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 :

  • true
  • false

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 :

RFC officielle :

Documentation jq :

Documentation Python JSON :

OpenClassrooms — Comprendre les API REST :

OpenClassrooms — Apprenez à programmer avec Python :

Documentation Docker daemon.json :

Documentation 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.

Retour en haut