Come funziona Python con JSON

di Lorenzo Neri

Come funziona Python con JSON? In questo articolo cerchiamo di capire come funziona ma soprattutto come gestire JSON grazie a Python.

Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Devi sapere che, se vuoi utilizzare il formato JSON nei tuoi script Python, Python stesso (il gioco di parole qui non era evitabile…) mette a disposizione un pacchetto “built-in”.

Indovina un po’ come si chiama?

Sì, esatto:

import json

Fatta questa scoperta, sarebbe più opportuno dire “Come funziona json in Python” piuttosto che “Come funziona Python con JSON”, infatti concentriamoci su questo pacchetto utilissimo.

Come funziona il pacchetto “json”

Il pacchetto JSON permette di gestire i contenuti, quindi file o stringhe JSON, come dei veri e propri dizionari in Python: in termini meno tecnichesi, significa che non dovrai diventare scemo a fare conversioni strane.

Ebbene sì, una volta caricato o inserito il contenuto JSON, questo stupendo pacchetto si occuperà in maniera totalmente automatica di convertirlo in un dizionario, perciò un tipo strutturato e completo in Python!

Tuttavia, c’è un piccolo grande contro in tutto questo: se il file o la stringa JSON è strutturata male (errori sintattici, apici lasciati aperti, ecc) lo script Python genererà un errore e quindi non funzionerà.

Convertire un contenuto JSON in dict Python

In parole povere, quello che abbiamo detto fino ad ora.

O detto in maniera più generica: “Come si converte un contenuto JSON in Python?”, pressappoco così:

import json
# contenuto JSON che vogliamo convertire
stringaJSON = '{ "nome": "Il Tuo Nome", "anni": 27, "citta": "Casalpusterlengo" }'
# eseguiamo il parsing
contenutoParsato = json.loads(stringaJSON)
# il risultato sarà dentro un dizionario Python
print(type(contenutoParsato)) # verrà stampato "<class 'dict'>" a video

Fermi tutti un momento!

Parsato?

Come dicevo un paio di paragrafi più in su, il pacchetto Python “json” si occupa di convertire automaticamente i contenuti JSON, perciò funziona in questo modo:

“Se trovo un contenuto valido JSON allora lo converto in dizionario, diversamente no”

Trovare un contenuto valido è l’operazione stessa di “parsing”: trovare un contenuto valido in una stringa che possa essere convertito nel tipo desiderato, ovvero da JSON a dizionario Python.

Di fatto, riprendendo l’esempio di prima, posso usare l’oggetto creato come un dizionario a tutti gli effetti:

print(contenutoParsato["anni"]) # stamperà a video "27"

Convertire un dict Python a JSON puro

Ovviamente, esiste l’operazione opposta a quella che abbiamo appena visto, ovvero convertire un dizionario Python a JSON nudo e crudo.

Il pacchetto Python “json”, offre il metodo “dumps” per questo:

import json
# scrivo il mio dizionario
dizionarioPython = {
        "nome": "Il Tuo Nome",
        "anni": 27,
        "citta": "Casalpusterlengo"
      }
# converto il dizionario in JSON puro
contenutoJSON = json.dumps(dizionarioPython)
# mostro a video il risultato
print(contenutoJSON)

In Python però, posso convertire anche tante altre cosine.

Quali tipi di variabili Python posso convertire in JSON

Per capire al 100% come funziona Python con JSON, è giusto mostrarti tutti i tipi che puoi convertire:

  1. dict
  2. list
  3. tuple
  4. string
  5. float
  6. int
  7. bool
  8. None

Se non mi credi, provaci tu stesso!

Formattare in Python i contenuti JSON

Un altro aspetto interessante del funzionamento di Python con i contenuti JSON è la formattazione.

Per intenderci, possiamo abbellire una stringa JSON, specificando il numero di indentazioni.

In parole semplici, per ogni oggetto JSON all’interno della stringa o dell’oggetto JSON che stiamo parsando da Python, vengono messi un tot di spazi specificati nell’indentazione.

Per esempio:

import json
# dizionario Python da convertire e indentare
# Anche perché non è troppo leggibile
oggetto = {"nome":"Il Tuo Nome","anni": 27, "auto":{"auto1":"Toyota","auto2":"BMW","auto3":"Audi"}}
# Lo trasformiamo in json
# e indentiamo per renderlo leggibile
contenutoJSON = json.dumps(oggetto, indent=3)

Da quel marasma di JSON illeggibile, otterrai una cosa così:

{
   "nome": "Il Tuo Nome",
   "anni": 27,
   "auto": {
      "auto1": "Toyota",
      "auto2": "BMW",
      "auto3": "Audi"
   }
}

Bello vero? Ma vediamo un’ultima cosa interessante

Come ordinare un JSON in Python

In Python possiamo ordinare un contenuto JSON in base alle sue chiavi.

Prendiamo l’esempio di prima, ma facciamo una piccola modifica:

import json
# dizionario Python da convertire e indentare
# Anche perché non è troppo leggibile
oggetto = {"nome":"Il Tuo Nome","anni": 27, "auto":{"auto1":"Toyota","auto2":"BMW","auto3":"Audi"}}
# Lo trasformiamo in json
# lo indentiamo per renderlo leggibile
# e ordiniamo per chiavi
contenutoJSON = json.dumps(oggetto, indent=3, sort_keys=True)

Et voilà, ecco come appare il JSON ordinato per chiave:

{
   "anni": 27,
   "auto": {
      "auto1": "Toyota",
      "auto2": "BMW",
      "auto3": "Audi"
   },
   "nome": "Il Tuo Nome"
}

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più