Introduction
JSON (JavaScript Object Notation) est un format léger d’échange de données, largement utilisé pour les fichiers de configuration et la communication avec les API.
Les outils shell traitent efficacement le texte brut. En revanche, les formats structurés comme JSON sont généralement plus faciles et plus sûrs à manipuler avec Python et ses bibliothèques intégrées.
Dans ce laboratoire, vous jouerez le rôle d’un développeur qui doit mettre à jour la configuration d’une application. Vous allez créer un fichier de configuration JSON, écrire un script Python pour le charger, modifier un paramètre, puis enregistrer les changements dans un nouveau fichier.
Créer des données d’exemple
Dans cette étape, vous allez créer un fichier de configuration JSON d’exemple. Ce fichier simule un fichier de paramètres courant pour une application logicielle. Il contient des clés correspondant au nom de l’application, à sa version, au mode de débogage et aux limites de connexion.
Commencez par vérifier que vous vous trouvez dans le bon répertoire de travail :
JSON est l’un des formats de données structurées les plus courants dans les opérations informatiques modernes, car les API, les outils cloud et de nombreux systèmes de configuration l’utilisent. Apprendre à le lire et à le modifier correctement est beaucoup plus utile que de le traiter comme du texte brut.
cd ~/project
Créez maintenant un fichier nommé config.json avec un éditeur de texte tel que nano.
nano config.json
Collez le contenu suivant dans le fichier. Cet objet JSON contient une valeur booléenne (false), un entier (100) et des chaînes de caractères.
{
"appName": "SuperApp",
"version": "1.0.0",
"debug": false,
"maxConnections": 100
}
Pour enregistrer le fichier et quitter nano :
Pour enregistrer et quitter nano, appuyez sur Ctrl + O pour écrire les modifications, puis sur Enter pour confirmer le nom du fichier. Appuyez ensuite sur Ctrl + X pour quitter l’éditeur.
Vous pouvez vérifier le contenu du fichier avec la commande cat :
cat config.json
Le contenu JSON doit s’afficher dans le terminal.
Lire du JSON
Dans cette étape, vous allez écrire un script Python pour lire le fichier config.json. Le module json de Python convertit les données JSON en dictionnaire Python.
C’est ici que Python présente un avantage évident par rapport aux scripts shell de base. Au lieu de rechercher du texte avec des expressions régulières en espérant que la structure reste simple, Python analyse le fichier selon les règles JSON et vous fournit de véritables types de données à manipuler.
Vous pouvez considérer json.load() comme le fait de « déballer » un colis. Cette fonction prend le texte enregistré dans le fichier (le colis) et le convertit en dictionnaire Python (son contenu), que vous pouvez facilement utiliser et modifier dans votre code.
Créez un nouveau script Python nommé parse_json.py :
nano parse_json.py
Ajoutez le code suivant au fichier. Ce script importe le module json, ouvre le fichier de configuration et charge les données.
import json
## Open the JSON file
with open('config.json', 'r') as file:
## Load the data into a Python dictionary
data = json.load(file)
## Print the data to verify it was loaded correctly
print("Current Configuration:")
print(data)
print(f"Type of data: {type(data)}")
Enregistrez le fichier et quittez nano (Ctrl+O, Enter, Ctrl+X).
Exécutez maintenant le script pour afficher le résultat :
python3 parse_json.py
Le dictionnaire doit s’afficher dans la console. Cela confirme que Python a correctement analysé le fichier JSON.
Modifier les données
Dans cette étape, vous allez modifier les données chargées dans votre script Python. Comme json.load() convertit les données en dictionnaire Python standard, vous pouvez modifier ses valeurs comme celles de n’importe quel autre dictionnaire.
Observez la conversion des types qui s’effectue ici. Les valeurs JSON true et false deviennent True et False en Python. Les nombres restent des valeurs numériques au lieu de devenir de simples chaînes de caractères. Les comparaisons et les calculs ultérieurs sont ainsi beaucoup plus sûrs.
Rouvrez parse_json.py pour le modifier :
nano parse_json.py
Modifiez le script afin de faire passer la valeur de la clé debug de False (qui correspond à false en JSON) à True. Ajoutez cette modification après le chargement des données, mais avant leur affichage.
Modifiez votre code pour obtenir le résultat suivant :
import json
with open('config.json', 'r') as file:
data = json.load(file)
print("Original Debug Status:", data['debug'])
## Modify the value
data['debug'] = True
print("Updated Debug Status:", data['debug'])
Enregistrez le fichier et quittez nano.
Exécutez à nouveau le script pour vérifier la modification en mémoire :
python3 parse_json.py
La sortie doit afficher l’état initial False, puis l’état mis à jour True. Notez que cette modification existe pour le moment uniquement dans la mémoire du programme Python ; elle n’a pas encore été enregistrée dans un fichier.
Enregistrer les modifications
Dans cette étape, vous allez enregistrer le dictionnaire modifié dans un nouveau fichier JSON. Pour cela, vous utiliserez la fonction json.dump().
Ce cycle de lecture, modification et écriture est très courant dans l’automatisation. Le script charge les données structurées, modifie uniquement les champs souhaités, puis écrit à nouveau un JSON valide. Cette méthode est bien plus fiable qu’une modification ligne par ligne lorsque la structure du fichier devient plus complexe.
Vous pouvez considérer json.dump() comme le fait de « remballer » le colis. Cette fonction prend votre dictionnaire Python (les éléments) et le reconvertit en texte (le colis fermé) afin de pouvoir l’enregistrer dans un fichier. Il est recommandé d’enregistrer les modifications dans un nouveau fichier, par exemple new_config.json, afin d’éviter d’écraser la configuration d’origine pendant les tests.
Ouvrez parse_json.py une dernière fois :
nano parse_json.py
Ajoutez le code qui écrit le dictionnaire data dans un fichier nommé new_config.json. Nous utiliserons le paramètre indent=4 pour rendre le fichier de sortie lisible par un humain (avec une indentation mise en forme).
Votre script final doit être le suivant :
import json
## 1. Read the original file
with open('config.json', 'r') as file:
data = json.load(file)
## 2. Modify the data
data['debug'] = True
## 3. Write to a new file
with open('new_config.json', 'w') as file:
json.dump(data, file, indent=4)
print("Configuration updated and saved to new_config.json")
Enregistrez le fichier et quittez nano.
Exécutez le script pour effectuer l’opération de lecture, modification et écriture :
python3 parse_json.py
Si l’opération réussit, le script affichera le message de confirmation.
Vérifier le résultat
Dans cette étape, vous allez vérifier que le nouveau fichier de configuration a été créé et qu’il contient la valeur mise à jour.
La vérification est particulièrement importante avec les fichiers structurés : un script peut s’exécuter sans erreur de syntaxe tout en produisant un contenu logique incorrect. Relire le fichier de sortie permet de confirmer à la fois sa création et l’exactitude de la modification des données.
Listez les fichiers de votre répertoire pour vérifier que new_config.json existe :
ls -l
Affichez maintenant le contenu du nouveau fichier :
cat new_config.json
Vous devez obtenir un résultat similaire à celui-ci :
{
"appName": "SuperApp",
"version": "1.0.0",
"debug": true,
"maxConnections": 100
}
Remarquez que "debug" vaut désormais true.
Vous pouvez également comparer les fichiers d’origine et le nouveau fichier avec la commande diff pour voir précisément ce qui a changé :
diff config.json new_config.json
La sortie mettra en évidence la différence entre les lignes concernant debug.
Résumé
Dans ce laboratoire, vous avez appris à manipuler des données JSON avec Python. Vous avez commencé par créer un fichier de configuration JSON brut, puis vous avez écrit un script Python pour analyser ce fichier et le convertir en dictionnaire. Vous avez modifié les données par programmation et enregistré la structure mise à jour dans un nouveau fichier JSON.
Ce processus — lire, modifier, écrire — constitue un modèle fondamental des scripts d’automatisation et de DevOps. Bash est idéal pour exécuter des commandes, tandis que la capacité de Python à gérer des données structurées comme JSON en fait un outil puissant pour administrer des configurations complexes et des données d’API.



