Scrivi JSON su un file in Python
JSON è un formato di file leggero e leggibile dall’uomo ampiamente utilizzato nel settore. JSON sta per JavaScript Object Notation
. Come suggerisce il nome, JSON è molto popolare tra gli sviluppatori web ed è ampiamente utilizzato nelle applicazioni web per inviare e recuperare dati dal server o da altre applicazioni.
Python viene fornito con molti pacchetti o moduli integrati e ha molti moduli esterni disponibili su Internet per il nostro utilizzo. È interessante notare che ha anche un modulo integrato, json
, per gestire i dati JSON.
In Python, il JSON può essere rappresentato in due modi. In primo luogo, come stringhe. Una stringa JSON ha questo aspetto.
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
Quando rappresenti JSON come stringa, assicurati di utilizzare solo virgolette doppie (""
) per racchiudere chiavi e valori stringa. JSON non supporta la citazione singola e genera un errore se viene utilizzata la citazione singola.
Il secondo modo è usare l’oggetto Python o popolarmente noto come dizionario Python. Ha una sintassi simile a quella di un JSON.
La rappresentazione del JSON sotto forma di un dizionario Python sarebbe simile a questa.
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
Anche in questo caso, assicurati di utilizzare solo virgolette doppie.
Scrivi JSON su un file con il modulo json
in Python
Supponi di avere una variabile che memorizza un JSON sotto forma di stringa. Quindi, per scriverlo in un file JSON, puoi usare il seguente codice.
import json
fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)
file = open(fileName, "w")
json.dump(jsonString, file)
file.close()
Per prima cosa, abbiamo importato il modulo json
. Quindi abbiamo memorizzato il nome del file JSON e la stringa JSON stessa in due variabili. Quindi stiamo creando e aprendo un nuovo file con il nome che abbiamo scelto in modalità write
.
Quindi, usiamo la funzione loads
dal modulo json
per convertire la stringa JSON in un dizionario python per scriverla su un file. La funzione accetta una stringa JSON valida e la converte in un dizionario Python.
Nota che se una stringa non valida viene fornita a questa funzione, genera un errore
json.decoder.JSONDecodeError
. Quindi, assicurati di passare una stringa corretta o magari usa un bloccotry-except-finally
per la gestione degli errori.
Successivamente, usiamo il metodo dump()
fornito dal modulo json
. Questo metodo accetta un dizionario Python e un descrittore di file come parametri e scrive i dati del dizionario nel file.
Il metodo dump()
funziona se e solo se il file non è aperto in un formato binario, cioè "wb"
e "rb"
non funzioneranno e porteranno a un TypeError
.
Infine, chiudiamo il file e il programma esce. Nella directory corrente verrà creato un file JSON con il nome definito nel programma.
Se nella directory di lavoro esiste un file con lo stesso nome e la stessa estensione, il contenuto di quel file verrà sovrascritto.
Supponiamo ora di voler scrivere un oggetto Python o un dizionario Python in un file JSON. In tal caso, fare riferimento al seguente frammento di codice.
import json
fileName = "my-data.json"
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()
In questo caso, abbiamo già l’oggetto o il dizionario python, e dump()
, come spiegato sopra, accetta un dizionario come parametro e lo scrive nel descrittore di file. Quindi, apriamo un file in modalità di scrittura, scriviamo i dati nel file usando il metodo dump()
e chiudiamo il file.