Persistenza dei dati Python - Modulo JSON

JSON sta per JavaScript Object Notation. È un formato di scambio dati leggero. È un formato di testo indipendente dalla lingua e multipiattaforma, supportato da molti linguaggi di programmazione. Questo formato viene utilizzato per lo scambio di dati tra il server Web e i client.

Il formato JSON è simile a pickle. Tuttavia, la serializzazione pickle è specifica di Python mentre il formato JSON è implementato da molti linguaggi, quindi è diventato uno standard universale. La funzionalità e l'interfaccia del modulo json nella libreria standard di Python è simile ai moduli pickle e marshal.

Proprio come nel modulo pickle, anche il modulo json fornisce dumps() e loads() funzione per la serializzazione di oggetti Python in una stringa codificata JSON e dump() e load() le funzioni scrivono e leggono oggetti Python serializzati su / da file.

  • dumps() - Questa funzione converte l'oggetto in formato JSON.

  • loads() - Questa funzione converte una stringa JSON in un oggetto Python.

L'esempio seguente mostra l'utilizzo di base di queste funzioni:

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

La funzione dumps () può accettare l'argomento facoltativo sort_keys. Per impostazione predefinita, è False. Se impostato su True, le chiavi del dizionario vengono visualizzate in ordine ordinato nella stringa JSON.

La funzione dumps () ha un altro parametro opzionale chiamato indent che accetta un numero come valore. Decide la lunghezza di ogni segmento della rappresentazione formattata della stringa json, simile all'output di stampa.

Il modulo json ha anche API orientate agli oggetti corrispondenti alle funzioni di cui sopra. Ci sono due classi definite nel modulo: JSONEncoder e JSONDecoder.

Classe JSONEncoder

L'oggetto di questa classe è il codificatore per le strutture dati Python. Ogni tipo di dati Python viene convertito nel tipo JSON corrispondente come mostrato nella tabella seguente:

Pitone JSON
Dict oggetto
lista, tupla Vettore
Str corda
Enumerazioni int, float, int e float numero
Vero vero
Falso falso
Nessuna nullo

La classe JSONEncoder è istanziata dal costruttore JSONEncoder (). I seguenti metodi importanti sono definiti nella classe encoder -

Sr.No. Metodi e descrizione
1

encode()

serializza l'oggetto Python in formato JSON

2

iterencode()

Codifica l'oggetto e restituisce un iteratore che fornisce la forma codificata di ogni elemento nell'oggetto.

3

indent

Determina il livello di rientro della stringa codificata

4

sort_keys

è vero o falso per far apparire le chiavi in ​​ordine o meno.

5

Check_circular

se True, controlla il riferimento circolare nell'oggetto di tipo contenitore

L'esempio seguente codifica l'oggetto elenco Python.

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

Classe JSONDecoder

L'oggetto di questa classe aiuta a decodificare nella stringa json nella struttura dati Python. Il metodo principale in questa classe è decode (). Il codice di esempio seguente recupera l'oggetto elenco Python dalla stringa codificata nel passaggio precedente.

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

Il modulo json definisce load() e dump() funzioni per scrivere dati JSON in un file come un oggetto, che può essere un file su disco o un flusso di byte e leggere i dati da essi.

dump ()

Questa funzione scrive i dati dell'oggetto Python in JSON in un file. Il file deve essere aperto con la modalità "w".

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

Questo codice creerà "json.txt" nella directory corrente. Mostra i contenuti come segue:

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

caricare()

Questa funzione carica i dati JSON dal file e restituisce l'oggetto Python da esso. Il file deve essere aperto con il permesso di lettura (dovrebbe avere la modalità "r").

Example

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

Output

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

Il json.tool ha anche un'interfaccia a riga di comando che convalida i dati nel file e stampa l'oggetto JSON in un modo abbastanza formattato.

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