Persistance des données Python - Module JSON

JSON signifie JavaScript Object Notation. C'est un format d'échange de données léger. Il s'agit d'un format texte indépendant du langage et multiplateforme, pris en charge par de nombreux langages de programmation. Ce format est utilisé pour l'échange de données entre le serveur Web et les clients.

Le format JSON est similaire à pickle. Cependant, la sérialisation pickle est spécifique à Python alors que le format JSON est implémenté par de nombreux langages et est donc devenu un standard universel. La fonctionnalité et l'interface du module json dans la bibliothèque standard de Python sont similaires aux modules pickle et marshal.

Tout comme dans le module pickle, le module json fournit également dumps() et loads() fonction pour la sérialisation de l'objet Python en chaîne codée JSON, et dump() et load() Les fonctions écrivent et lisent des objets Python sérialisés vers / depuis un fichier.

  • dumps() - Cette fonction convertit l'objet au format JSON.

  • loads() - Cette fonction convertit une chaîne JSON en objet Python.

L'exemple suivant montre l'utilisation de base de ces fonctions -

import json
   data=['Rakesh',{'marks':(50,60,70)}]
   s=json.dumps(data)
json.loads(s)

La fonction dumps () peut prendre l'argument sort_keys facultatif. Par défaut, il est faux. Si la valeur est True, les clés du dictionnaire apparaissent dans l'ordre trié dans la chaîne JSON.

La fonction dumps () a un autre paramètre facultatif appelé indent qui prend un nombre comme valeur. Il décide de la longueur de chaque segment de la représentation formatée de la chaîne json, similaire à la sortie d'impression.

Le module json a également une API orientée objet correspondant aux fonctions ci-dessus. Il existe deux classes définies dans le module - JSONEncoder et JSONDecoder.

Classe JSONEncoder

L'objet de cette classe est l'encodeur pour les structures de données Python. Chaque type de données Python est converti en type JSON correspondant, comme indiqué dans le tableau suivant -

Python JSON
Dict objet
liste, tuple tableau
Str chaîne
Enums dérivés int, float, int et float nombre
Vrai vrai
Faux faux
Aucun nul

La classe JSONEncoder est instanciée par le constructeur JSONEncoder (). Les méthodes importantes suivantes sont définies dans la classe d'encodeur -

N ° Sr. Méthodes et description
1

encode()

sérialise l'objet Python au format JSON

2

iterencode()

Encode l'objet et renvoie un itérateur donnant la forme codée de chaque élément de l'objet.

3

indent

Détermine le niveau de retrait de la chaîne codée

4

sort_keys

est soit vrai soit faux pour que les clés apparaissent dans un ordre trié ou non.

5

Check_circular

si True, vérifiez la référence circulaire dans l'objet de type conteneur

L'exemple suivant encode l'objet de liste Python.

e=json.JSONEncoder()
e.encode(data)

Classe JSONDecoder

L'objet de cette classe aide à être décodé en chaîne json dans la structure de données Python. La méthode principale de cette classe est decode (). L'exemple de code suivant récupère l'objet de liste Python à partir de la chaîne codée à l'étape précédente.

d=json.JSONDecoder()
d.decode(s)

Le module json définit load() et dump() fonctions pour écrire des données JSON dans un fichier comme un objet - qui peut être un fichier disque ou un flux d'octets et en lire les données.

déverser()

Cette fonction écrit les données d'objet JSONed Python dans un fichier. Le fichier doit être ouvert en mode «w».

import json
data=['Rakesh', {'marks': (50, 60, 70)}]
   fp=open('json.txt','w')
   json.dump(data,fp)
   fp.close()

Ce code créera 'json.txt' dans le répertoire courant. Il montre le contenu comme suit -

["Rakesh", {"marks": [50, 60, 70]}]

charge()

Cette fonction charge les données JSON à partir du fichier et renvoie un objet Python à partir de celui-ci. Le fichier doit être ouvert avec l'autorisation de lecture (doit avoir le mode «r»).

Example

fp=open('json.txt','r')
   ret=json.load(fp)
   print (ret)
   fp.close()

Output

['Rakesh', {'marks': [50, 60, 70]}]

le json.tool module dispose également d'une interface de ligne de commande qui valide les données dans le fichier et imprime l'objet JSON d'une manière assez formatée.

C:\python37>python -m json.tool json.txt
[
   "Rakesh",   
   {
      "marks": [
         50,
         60,
         70
      ]
   }
]