import csv
import json
# Leggi il CSV e converti in JSON
def csv_to_json(csv_file, json_file):
data = []
# Apri e leggi il file CSV
with open(csv_file, 'r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
# Converti ogni riga in un dizionario
for row in csv_reader:
data.append(row)
# Scrivi il JSON
with open(json_file, 'w', encoding='utf-8') as file:
json.dump(data, file, indent=2, ensure_ascii=False)
print(f"✅ Conversione completata: {len(data)} record")
# Utilizzo
csv_to_json('dati.csv', 'dati.json')
Esempio pratico
Se hai un file studenti.csv:
nome,età,corso
Marco,22,Informatica
Sara,21,Matematica
Luca,23,Fisica
Il risultato in studenti.json sarà:
[
{
"nome": "Marco",
"età": "22",
"corso": "Informatica"
},
{
"nome": "Sara",
"età": "21",
"corso": "Matematica"
},
{
"nome": "Luca",
"età": "23",
"corso": "Fisica"
}
]
Versione con pandas (più semplice)
import pandas as pd
# Leggi CSV e converti in JSON
df = pd.read_csv('dati.csv')
df.to_json('dati.json', orient='records', indent=2, force_ascii=False)
import json
import csv
# Converti JSON in CSV
def json_to_csv(json_file, csv_file):
# Leggi il file JSON
with open(json_file, 'r', encoding='utf-8') as file:
data = json.load(file)
# Scrivi il CSV
with open(csv_file, 'w', newline='', encoding='utf-8') as file:
# Usa le chiavi del primo elemento come intestazioni
writer = csv.DictWriter(file, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
print(f"✅ Conversione completata: {len(data)} record")
# Utilizzo
json_to_csv('dati.json', 'dati.csv')
Esempio pratico
Se hai un file studenti.json:
[
{
"nome": "Marco",
"età": "22",
"corso": "Informatica"
},
{
"nome": "Sara",
"età": "21",
"corso": "Matematica"
}
]
Il risultato in studenti.csv sarà:
nome,età,corso
Marco,22,Informatica
Sara,21,Matematica
Versione con pandas (più semplice)
import pandas as pd
# Leggi JSON e converti in CSV
df = pd.read_json('dati.json')
df.to_csv('dati.csv', index=False, encoding='utf-8')
Gestione errori
def json_to_csv_safe(json_file, csv_file):
try:
with open(json_file, 'r', encoding='utf-8') as file:
data = json.load(file)
if not data:
print("⚠️ File JSON vuoto")
return
with open(csv_file, 'w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
print(f"✅ Convertiti {len(data)} record")
except FileNotFoundError:
print("❌ File JSON non trovato")
except json.JSONDecodeError:
print("❌ Errore nel formato JSON")