Introduzione
JSON è un formato di dati basato su testo leggibile dall'uomo. È indipendente dalla lingua e utilizzato per lo scambio di dati tra applicazioni.
In questo articolo, spiegheremo come analizzare i dati JSON in Python.
Python JSON
Il modulo json
che consente di codificare e decodificare i dati JSON fa parte della libreria standard Python.
JSON è una stringa che rappresenta i dati. Codificare o serializzare significa trasformare un oggetto Python in una stringa JSON che può essere memorizzata in un file o trasmessa sulla rete. Decodifica o deserializzazione del processo inverso di codifica in cui una stringa JSON viene trasformata in oggetto Python.
Di seguito vediamo una tabella che mostra gli oggetti Python e la loro rappresentazione JSON equivalente:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
Per lavorare con JSON è sufficiente importare il modulo nella parte superiore del file:
import json
Codificare un JSON in Python
Il modulo json
ha due metodi per codificare gli oggetti Python in stringhe formattate JSON: dump()
e dumps()
.
Il metodo dump()
invia l'output a un oggetto simile a un file. Sono necessari due argomenti posizionali: l'oggetto da codificare e l'oggetto simile a un file. Ecco un esempio:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
with open("file.json", "w") as file:
json.dump(data, file)
Se si esegue lo script, verrà creato un file denominato file.json
con il seguente contenuto:
{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}
Il metodo dumps()
funziona come dump()
ma invece di inviare l'output a un oggetto simile a un file, restituisce una stringa:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
json.dumps(data)
'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'
Entrambi i metodi accettano gli stessi argomenti di parole chiave. Ad esempio, se stai analizzando o eseguendo il debug dei dati JSON potresti voler specificare il livello di rientro:
data = {
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
print(json.dumps(data, indent=2))
{
"country": "Germany",
"vehicle": {
"name": "Volkswagen",
"model": "T-Roc"
}
}
Decodificare un JSON in Python
Per trasformare i dati codificati JSON in oggetti Python, utilizzare i metodi load()
e loads()
.
Il metodo load()
legge la struttura JSON da un oggetto simile a un file e lo trasforma in un oggetto Python.
Supponiamo di avere il seguente file JSON:
[
{
"userId": 1,
"id": 1,
"title": "Meet with Lisa",
"completed": true
},
{
"userId": 1,
"id": 2,
"title": "Design a prototype",
"completed": false
}
]
Per trasformare i dati JSON in una rappresentazione Python, dovresti usare qualcosa del genere:
import json
with open('file.json') as f:
data = json.load(f)
type(data)
Il JSON viene trasformato in un elenco Python, che puoi utilizzare nel tuo codice:
<class 'list'>
Il metodo loads()
converte una stringa contenente un documento JSON in un oggetto Python:
import json
json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'
print(json.loads(json_str))
La stringa viene trasformata in un dizionario Python:
{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}
Ecco un esempio più avanzato che mostra come effettuare una richiesta API e decodificare i dati JSON:
import json
import requests
response = requests.get("https://jsonplaceholder.typicode.com/users")
users = json.loads(response.text)
print(users)
Conclusione
In questo tutorial abbiamo visto come codificare e decodificare i dati JSON in Python.