Lavorare con i dati JSON in Python

JSON (JavaScript Object Notation) è un formato dati leggero utilizzato per lo scambio di dati tra un server e un client. È comunemente utilizzato nelle applicazioni Web per inviare e ricevere dati. Python fornisce un modulo integrato denominato json che semplifica l'utilizzo dei dati JSON. Questo articolo ti guiderà attraverso le basi dell'utilizzo dei dati JSON in Python, tra cui la lettura, la scrittura e la manipolazione di oggetti JSON.

Che cosa è JSON?

JSON è un formato basato su testo, facile da leggere e scrivere sia per gli esseri umani che per le macchine. È costituito da coppie chiave-valore, simili ai dizionari Python. Un tipico oggetto JSON si presenta così:

{
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "is_student": false,
    "skills": ["Python", "JavaScript", "SQL"]
}

Importazione del modulo JSON

Il modulo json è incluso nella libreria standard di Python, quindi non devi installare nulla. Basta importarlo all'inizio del tuo script:

import json

Lettura dei dati JSON

Puoi leggere i dati JSON da una stringa o da un file. Il metodo json.loads() viene utilizzato per analizzare i dati JSON da una stringa, mentre json.load() viene utilizzato per leggere i dati JSON da un file.

Lettura di JSON da una stringa

Per leggere JSON da una stringa, utilizzare il metodo json.loads(), che converte la stringa JSON in un dizionario Python.

# Example of reading JSON from a string
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)

print(data)
print(data['name'])  # Output: Alice

Lettura di JSON da un file

Per leggere i dati JSON da un file, usa il metodo json.load(). Questo metodo legge il contenuto di un file e lo converte in un dizionario Python.

# Example of reading JSON from a file
with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

Scrittura di dati JSON

Puoi scrivere dati JSON in una stringa o in un file. Il metodo json.dumps() viene utilizzato per convertire un oggetto Python in una stringa JSON, mentre json.dump() viene utilizzato per scrivere dati JSON in un file.

Scrittura di JSON in una stringa

Per scrivere JSON in una stringa, utilizzare il metodo json.dumps(), che converte un dizionario Python in una stringa JSON.

# Example of writing JSON to a string
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

json_string = json.dumps(data)
print(json_string)

Scrittura di JSON in un file

Per scrivere dati JSON in un file, usa il metodo json.dump(). Questo metodo prende un oggetto Python e lo scrive in un file in formato JSON.

# Example of writing JSON to a file
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

with open('output.json', 'w') as file:
    json.dump(data, file)

Stampa nitida dei dati JSON

Il metodo json.dumps() ha diversi parametri che consentono di formattare i dati JSON per una migliore leggibilità. Il parametro indent specifica il numero di spazi da utilizzare per l'indentazione, mentre il parametro sort_keys ​​ordina le chiavi nell'output.

# Example of pretty-printing JSON data
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Chicago"
}

json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)

Conversione tra tipi di dati JSON e Python

Il modulo json di Python può gestire diversi tipi di dati e convertirli tra JSON e Python. Ecco un rapido riferimento:

  • dict (Python) in object (JSON)
  • elenco (Python) in array (JSON)
  • str (Python) in string (JSON)
  • int, float (Python) a numero (JSON)
  • Da True, False (Python) a true, false (JSON)
  • None (Python) a null (JSON)

Gestione degli errori JSON

Quando si lavora con JSON, possono verificarsi errori dovuti a formattazione non corretta o dati inaspettati. Il modulo json solleva eccezioni come JSONDecodeError quando incontra tali problemi. Utilizzare i blocchi try e except per gestire questi errori con eleganza.

# Handling JSON errors
json_string = '{"name": "Alice", "age": 30, "city": "New York"'  # Missing closing brace

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    print(f"Error decoding JSON: {e}")

Conclusione

Lavorare con i dati JSON è un'abilità fondamentale per gli sviluppatori Python, specialmente nello sviluppo web e nella scienza dei dati. Il modulo json fornisce metodi facili da usare per leggere, scrivere e manipolare i dati JSON. Padroneggiando queste tecniche, puoi gestire in modo efficiente i dati JSON nelle tue applicazioni Python.