Comment analyser JSON en Python

JSON est un format populaire pour l’échange de données. Python est livré avec un module JSON intégré pour analyser et travailler avec les 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 !⏳

Qu’est-ce que JSON ?

JSON signifie JavaScript Object Notation, et c’est un format textuel pour l’échange de données. Bien que JSON soit initialement inspiré des objets JavaScript, presque tous les langages de programmation prennent en charge le travail 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 les données dans des 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 dans JSON est stocké sous la forme d’une 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.

Comme le module json 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

Comment charger une chaîne JSON en Python

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

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

Ici,

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

Cela charge le dans le dictionnaire Python .

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 à l’aide de la méthode load(). 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)

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

Comment créer des chaînes JSON en 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 la méthode dumps() avec cette syntaxe :

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

Ici,

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

Ainsi, la méthode dumps() vide dans une chaîne JSON .

À notre dictionnaire Python existant py_dict. ajoutons une nouvelle clé « films ». 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 en utilisant la méthode dumps().

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 paramètre facultatif indent pour ajouter une indentation.

Et vous pouvez le faire en définissant l’indentation sur 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.

Remarque : 💡 Si vous souhaitez que les clés soient triées par ordre alphabétique, vous pouvez définir le paramètre sort_keys sur 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 clés apparaissent désormais par ordre alphabétique : « auteur », « titre » et « année ».

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

Comment lire un fichier JSON en Python

Pour 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 la méthode load() et non la méthode load(). load() charge une chaîne JSON, tandis 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 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 des 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 à partir d’un fichier, spécifiez le mode comme lu, indiqué par ‘r’ dans le code ci-dessus.

Remarque : Afin de naviguer facilement dans le répertoire actuel, assurez-vous que le fichier JSON se trouve dans le même dossier que main.py, comme indiqué dans 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 le 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>,<json_file>)

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

Ainsi, la syntaxe ci-dessus vide le dictionnaire dans le fichier JSON .

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 la fonction dump() :

with open('new_file.json','w') as file:
  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, 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 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 les paramètres indent et sort_keys.

Conclusion

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

Dans ce tutoriel, vous avez appris :

  • les bases de l’utilisation de JSON,
  • comment utiliser les méthodes load() et load() pour lire respectivement la chaîne JSON et les fichiers JSON,
  • comment utiliser les méthodes dumps() et dump() 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 les outils JSON pour analyser, formater et valider.