JSON est un format populaire pour l’échange de données. Python est livré avec un module JSON intégré qui permet d’analyser et de travailler avec des données JSON. Ce tutoriel vous apprendra tout ce qu’il faut savoir pour travailler avec JSON en Python.

À la fin de ce tutoriel, vous aurez appris :

  • les bases de JSON,
  • comment analyser et créer des chaînes JSON en Python, et
  • comment lire et écrire dans des fichiers JSON en Python.

Commençons!⏳

Qu’est-ce que JSON ?

JSON est l’abréviation deJavaScript Object Notation, et il s’agit d’un format textuel pour l’échange de données. Bien que JSON soit initialement inspiré par les objets JavaScript, presque tous les langages de programmation permettent de travailler avec JSON.

Si vous avez déjà travaillé avec des API ou lu des fichiers de configuration, vous avez probablement rencontré JSON.

vous envoyez et recevez des données en JSON lorsque vous interrogez des API. JSON est également largement utilisé dans les communications client-serveur des applications logicielles. En outre, vous pouvez également utiliser JSON pour le stockage de données à usage général.

Le format JSON est très similaire à celui d’un dictionnaire Python. Les dictionnaires sont de puissantes structures de données intégrées à Python qui stockent des données sous forme de paires clé-valeur.

Avant d’aller plus loin, voici quelques points qui méritent d’être soulignés :

  • En Python, un objet JSON est stocké comme un dictionnaire.
  • Un tableau en JSON est stocké comme une liste Python.
  • Dans JSON, les valeurs booléennes sont désignées par true et false. En Python, elles sont converties en booléens True et False.

Pour plus de détails sur les types de données qui sont traduits de JSON à Python, lisez la documentation ici.

Comme le module json fait partie de la bibliothèque standard de Python, vous n’avez pas besoin de l’installer. Vous pouvez l’importer dans votre répertoire courant, comme ceci :

import json

Comment charger une chaîne JSON en Python

La syntaxe générale pour charger une chaîne JSON en Python est la suivante :

<dict_obj> = json.loads(<json_str>)

Ici,

  • <dict_obj> est le dictionnaire Python dans lequel vous souhaitez charger la chaîne JSON,
  • <json_str> est une chaîne JSON valide.

Ceci charge la chaîne <json_str> dans le dictionnaire Python <dict_obj>.

Codons un exemple. Ici, json_str est une chaîne JSON.

json_str = '''
{
    "books" : [
        {
            "title" : "Le vent dans les saules",
            "auteur" : "Kenneth Grahame",
            "année" : "1908"
        },
        {
            "title" : "Au phare",
            "auteur" : "Virginia Woolf",
            "year" : "1927"
        }
    ]
}
'''

L’extrait de code ci-dessous montre comment vous pouvez charger la chaîne JSON json_str dans un dictionnaire Python à l’aide de la méthode loads(). Vous pouvez utiliser la fonction intégrée type() pour vérifier que py_dict est un dictionnaire Python.

py_dict = json.loads(json_str)

type(py_dict)

# Résultat : dict

print(py_dict)

# Sortie
{'books' : [{'title' : 'Le vent dans les saules', 
'auteur' : 'Kenneth Grahame', 'année' : '1908'}, 
{'title' : to the Lighthouse", "auteur" : "Virginia Woolf", "année" : "1927"}]}

Comme le montre le code ci-dessus, tous les champs de la chaîne JSON sont des paires clé-valeur dans py_dict.

Comment créer des chaînes JSON en Python ?

Supposons que vous disposiez d’un dictionnaire Python. Comment créer une chaîne JSON à partir de ce dictionnaire ?

Vous pouvez le faire en utilisant la méthode dumps() avec cette syntaxe :

<json_str> = json.dumps(<dict_obj>)

Ici,

  • <dict_obj> est le dictionnaire Python à partir duquel vous souhaitez créer la chaîne JSON,
  • <json_str> est la chaîne JSON résultante.

La méthode dumps() déverse donc <dict_obj> dans une chaîne JSON <json_str>.

Ajoutons une nouvelle clé "films" à notre dictionnaire Python py_dict. Vous pouvez le faire comme indiqué dans l’extrait de code suivant :

py_dict["films"] = [{"title" : "The Imitation Game", "year" : "2014",
"lang" : "en", "watched":True}]]

Maintenant, vidons le dictionnaire modifié dans une nouvelle chaîne JSON json_str2 à l’aide de la méthode dumps().

json_str2 = json.dumps(py_dict)

print(json_str2)

# Sortie
{"books" : [{"title" : "Le vent dans les saules", "auteur" : "Kenneth Grahame", "année" : "1908"}, 
{"title" : "Vers le phare", "auteur" : "Virginia Woolf", "année" : "1927"}], 
"films" : [{"title" : "The Imitation Game", "année" : "2014", "lang" : "en", "watched" : true}]} }

Comme vous pouvez le voir dans l’exemple ci-dessus, la chaîne JSON de sortie est difficile à lire sans un formatage approprié. Vous pouvez utiliser le paramètre facultatif indent pour ajouter une indentation.

Vous pouvez le faire en définissant indent sur un entier comme 2, comme indiqué ci-dessous :

json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# Sortie
{
  "books" : [
    {
      "title" : "Le vent dans les saules",
      "auteur" : "Kenneth Grahame",
      "année" : "1908"
    },
    {
      "title" : "Au phare",
      "auteur" : "Virginia Woolf",
      "year" : "1927"
    }
  ],
  "films" : [
    {
      "title" : "The Imitation Game",
      "year" : "2014",
      "lang" : "en",
      "regardé" : true
    }
  ]
}

Observez comment la sortie a été formatée avec l’indentation, et il est facile de suivre à travers.

Remarque: 💡 Si vous souhaitez que les clés soient triées par ordre alphabétique, vous pouvez attribuer la valeur True au paramètre sort_keys.

Comme vous pouvez le voir dans l’extrait de code ci-dessous, les clés sont désormais triées par ordre alphabétique.

json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)

# Sortie
{
  "books" : [
    {
      "auteur" : "Kenneth Grahame",
      "titre" : "Le vent dans les saules",
      "année" : "1908"
    },
    {
      "auteur" : "Virginia Woolf",
      "title" : "Au phare",
      "année" : "1927"
    }
  ],
  "films" : [
    {
      "lang" : "en",
      "title" : "The Imitation Game",
      "regardé" : vrai,
      "année" : "2014"
    }
  ]

Les clés apparaissent désormais dans l’ordre alphabétique : "auteur", "titre" et "année".

Jusqu’à présent, vous avez appris à travailler avec des chaînes JSON en Python. Dans la section suivante, vous apprendrez à travailler avec des fichiers JSON.

Comment lire un fichier JSON en Python

Pour lire un fichier JSON en Python, utilisez la syntaxe suivante :

json.load(<fichier-json>) 

# où <json-fichier> est un fichier JSON valide.

Remarquez que nous utilisons la méthode load() et non la méthode loads ( ). loads() charge une chaîne JSON, alors que load() charge un fichier JSON.

Vous devriez envisager d’utiliser des gestionnaires de contexte lorsque vous travaillez avec des fichiers en Python. Vous pouvez également essayer de lire des fichiers comme suit, sans utiliser de gestionnaire de contexte :

mon_fichier = open('students.json', 'r')

contents = mon_fichier.read()

print(contenu)

file.close()

Si vous ne fermez pas le fichier, vous risquez de gaspiller des ressources.

Cependant, lorsque vous travaillez avec des gestionnaires de contexte, les fichiers sont automatiquement fermés une fois que les opérations sur les fichiers sont terminées.

Vous pouvez utiliser le gestionnaire de contexte pour lire les fichiers, comme indiqué ci-dessous :

with open('students.json', 'r') as file :   
   data = json.load(file) 
   print(data) 

# Sortie 

{'students' : [{'roll_num' : 'cs27', 'name' : 'Anna', 'course' : 'CS'}, 
{'roll_num' : 'ep30', 'name' : 'Kate', 'course' : 'PHY'}]}

Lorsque vous lisez un fichier, spécifiez le mode de lecture, indiquépar "r" dans le code ci-dessus.

Remarque: afin de pouvoir naviguer facilement dans le répertoire courant, assurez-vous que le fichier JSON se trouve dans le même dossier que main.py, comme le montre l’image ci-dessous. Si votre fichier JSON se trouve dans un autre dossier, assurez-vous de spécifier le chemin d’accès au fichier.

read-json-file-in-python
Lire un fichier JSON en Python.

Dans la section suivante, vous apprendrez à écrire dans un fichier JSON.✍

Comment écrire dans un fichier JSON en Python

Pour écrire dans un fichier JSON existant ou pour créer un nouveau fichier JSON, utilisez la méthode dump() comme indiqué :

json.dump(<dict_obj>,<fichier_json>)

# où <dict_obj> est un dictionnaire Python 

# et <fichier_json> est le fichier JSON 

La syntaxe ci-dessus déverse donc le dictionnaire <dict_obj> dans le fichier JSON <fichier_json>.

Dans la section précédente, nous avions le dictionnaire py_dict. Maintenant, nous allons le transférer dans un nouveau fichier JSON. Nommons-le nouveau_fichier.json.

La cellule de code suivante montre comment vous pouvez utiliser la fonction dump():

avec open('nouveau_fichier.json', 'w') en tant que fichier :
  json.dump(py_dict,file)

Remarque: l’ouverture d’un fichier en mode écriture (w) écrase le contenu si le fichier existe. Si le fichier n’existe pas, il est créé.

Après avoir exécuté la cellule de code ci-dessus, vous verrez qu’un nouveau fichier JSON a été créé dans le répertoire de travail actuel. Vous pouvez ensuite examiner le contenu du fichier JSON.

create-json-file-python
Créer un fichier JSON en Python

Lorsque vous écrivez dans des fichiers, l’objectif principal est le stockage des données. Et si vous souhaitez préserver le formatage, vous pouvez également utiliser les paramètres indent et sort_keys.

Conclusion

⏲ Il est temps de faire un rapide résumé.

Dans ce tutoriel, vous avez appris :

  • les bases de l’utilisation de JSON,
  • comment utiliser les méthodes loads() et load() pour lire respectivement des chaînes JSON et des fichiers JSON,
  • comment utiliser les méthodes dumps() et dump( ) pour transférer des dictionnaires Python dans des chaînes JSON et des fichiers JSON respectivement.

J’espère que ce tutoriel vous a été utile. Bon apprentissage !

Vous pouvez également consulter les outils JSON pour analyser, formater et valider.