JSON(JavaScript Object Notation) è utilizzato dalla maggior parte degli sviluppatori per serializzare i dati specialmente nelle API. In questo tutorial andiamo a vedere come effettuare il parse di un JSON con python.

Libreria Json

La libreria json ci semplifica di molto il parsing di un oggetto JSON, quindi andiamo subito ad importarla nel nostro script.

import json


Effettuare il Parse di una stringa Json

Puoi fare il parse di una stringa usando il metodo json.loads(stringa_json) che deserializza i valori in un dizionario:

import json
json_string = '{"linguaggio": "python", "framework": "django"}'

json_dict = json.loads(json_string)
print(json_dict)
print(json_dict["linguaggio"])

#output
{'linguaggio': 'python', 'framework': 'django'}
python


Effettuare il parse di un file JSON

Un caso d'uso più frequente è quello di dover interagire con un file JSON invece che con delle stringhe.

Come prima cosa creiamo uno stream per poter accedere al file, dopodichè anche in questo caso possiamo utilizzare la libreria json chiamando il metodo json.load() in quanto si tratta di un file:

import json

with open("json_file.json", "r") as json_file:
data = json.load(json_file)

print(data)


Convertire un oggetto di python in una stringa JSON

è possibile convertire un oggetto in una stringa JSON usando il metodo json.dumps(python_object):

import json

python_dict = {'Nome': "Marco", "Anni": 36, "Lavoro": None, "Studente": False}
json_string = json.dumps(python_dict)

Ecco la lista degli oggetti che si possono castare in una stringa: dict, list, tuple, string, int, float, True, False, None.


Scrivere del JSON in un file

Come nella lettura di un file, inizialmente creiamo uno stream in scrittura per accedere al file con cui vogliamo interagire, infine andiamo a chiamare il metodo json.dump(data) per scrivere i dati sul file:

import json

data = {"Nome": "Matteo", "Anni": 15, "Lavoro": None, "Studente": True}

with open("result.json", "w") as json_file:
json.dump(data, json_file)

In questo caso, nel caso non esistesse già un file di nome "result.json" nel percorso indicato, verrà creato un file con quel nome e al suo interno verrà scritto l'oggetto(in questo caso un dizionario) in formato JSON.


Effettuare il parse in un oggetto custom

Fino ad'ora abbiamo visto come fare il parse in un JSON in una stringa, oppure come leggere/scrivere in un file. Ma se volessimo castarlo in un oggetto custom? ecco un esempio banale per castare un JSON in una classe:

import json

class Persona(object):
def __init__(self, data):
self.__dict__ = json.loads(data)

persona_dict = {"Nome": "Luca", "Anni": 50, "Lavoro": True, "Studente": False}
json_data = json.dumps(persona_dict)

persona = Persona(json_data)
print(persona.Nome)

Condividi sui Social