JSON est un format populaire pour l'échange de données. Python est livré avec un JSON module pour analyser et travailler avec des données JSON. Et ce tutoriel vous apprendra tout sur le travail avec JSON en Python.

À la fin de ce didacticiel, 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 !⏳

What is JSON?

JSON peuplements pour JavaScript Objet Notation, et c'est un basé sur du texte format d'échange de données. Bien que JSON soit initialement inspiré par des objets JavaScript, presque tous les langages de programmation prennent en charge 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. Et JSON est également largement utilisé dans la communication client-serveur dans les applications logicielles. De plus, vous pouvez également utiliser JSON pour le stockage de données à usage général.

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

Avant d'aller plus loin, voici quelques points à noter :

  • En Python, un objet JSON est stocké sous forme de dictionnaire.
  • Un tableau en JSON est stocké en tant que Liste Python.
  • Dans JSON, les valeurs booléennes sont notées true et false. En Python, ceux-ci sont convertis en booléens True et False.

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

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

import json

How to Load a JSON String in Python

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

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

Cela charge le <json_str> dans le dictionnaire Python <dict_obj>.

Codez un exemple. Ici json_str est une chaîne JSON.

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''

Et l'extrait de code ci-dessous montre comment vous pouvez charger la chaîne JSON json_str dans un dictionnaire Python en utilisant le loads() méthode. Vous pouvez utiliser le type() fonction pour vérifier que py_dict est un dictionnaire Python.

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}

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

How to Create JSON Strings in Python

Supposons que vous ayez un dictionnaire Python. Alors, comment créez-vous une chaîne JSON à partir de celle-ci ?

Vous pouvez le faire en utilisant le dumps() méthode 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.

Alors le dumps() vidages de méthode <dict_obj> dans une chaîne JSON <json_str>.

Vers notre dictionnaire Python existant py_dict. ajoutons une nouvelle clé "movies". Vous pouvez le faire comme indiqué dans l'extrait de code suivant :

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

Maintenant, vidons le dictionnaire modifié dans une nouvelle chaîne JSON json_str2 utilisant l' dumps() méthode.

json_str2 = json.dumps(py_dict)

print(json_str2)

# Output
{"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, 
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], 
"movies": [{"title": "The Imitation Game", "year": "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 optionnel paramètre indent pour ajouter une indentation.

Et vous pouvez le faire en définissant indent à un entier comme 2, comme indiqué ci-dessous :

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

# Output
{
  "books": [
    {
      "title": "The Wind in the Willows",
      "author": "Kenneth Grahame",
      "year": "1908"
    },
    {
      "title": "To the Lighthouse",
      "author": "Virginia Woolf",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "title": "The Imitation Game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  ]
}

Observez comment la sortie a été formatée avec l'indentation, et c'est facile à suivre.

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

Comme vous pouvez le voir dans l'extrait de code ci-dessous, les clés ont maintenant été triées par ordre alphabétique.

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

# Output
{
  "books": [
    {
      "author": "Kenneth Grahame",
      "title": "The Wind in the Willows",
      "year": "1908"
    },
    {
      "author": "Virginia Woolf",
      "title": "To the Lighthouse",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "lang": "en",
      "title": "The Imitation Game",
      "watched": true,
      "year": "2014"
    }
  ]

Et les touches apparaissent maintenant dans l'ordre alphabétique : "author", "title" et "year".

Jusqu'à présent, vous avez appris à utiliser les chaînes JSON en Python. Dans la section suivante, vous apprendrez à utiliser les fichiers JSON.

How to Read a JSON File in Python

Lire un fichier JSON en Python, utilisez la syntaxe suivante :

json.load(<json-file>) 

# where <json-file> is any valid JSON file.

Remarquez comment nous utilisons le load() méthode et non la loads() méthode. loads() charge un Chaîne JSON, tout en 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 les fichiers comme suit, sans utiliser le gestionnaire de contexte :

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

contents = my_file.read()

print(contents)

file.close()

Si vous ne fermez pas le fichier, il peut y avoir un gaspillage potentiel de ressources.

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

Et 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) 

# Output 

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

Pendant que vous lisez un fichier, spécifiez le mode comme lire-indiqué par 'r' dans le code ci-dessus.

Notes: Afin de 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 dossier différent, assurez-vous de spécifier le chemin d'accès au fichier.

lire-fichier-json-en-python
Lire le fichier JSON en Python.

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

How to Write to a JSON File in Python

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

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

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

Ainsi, la syntaxe ci-dessus vide le dictionnaire <dict_obj> dans le fichier JSON <json_file>.

Dans la section précédente, nous avions le dictionnaire py_dict. Maintenant, vidons cela dans un nouveau fichier JSON. Et nommons-le new_file.json.

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

with open('new_file.json','w') as file:
  json.dump(py_dict,file)

Notes: Ouverture d'un fichier dans le écrire modes (w) écrase le contenu si le fichier existe. Si le fichier n'existe pas, le fichier 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. Et vous pouvez continuer et examiner le contenu du fichier JSON.

créer-fichier-json-python
Créer un fichier JSON en Python

Lors de l'écriture dans des fichiers, l'objectif principal est le stockage des données. Et si vous souhaitez conserver la mise en forme, vous pouvez également utiliser le indent et sort_keys paramètres.

Conclusion

⏲ ​​C'est l'heure du petit récapitulatif.

Dans ce tutoriel, vous avez appris :

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

J'espère que vous avez trouvé ce tutoriel utile. Bon apprentissage!

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