Scrivi JSON su un file in Python

Vaibhav Vaibhav 22 giugno 2021
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 blocco try-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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Articolo correlato - Python JSON