CSV (Comma-Separated Values) e JSON (JavaScript Object Notation) sono due dei formati di scambio dati più ampiamente utilizzati. CSV eccelle nei dati tabulari con overhead minimo, mentre JSON gestisce facilmente dati gerarchici e annidati.
Perché convertire CSV in JSON?
I file CSV sono compatti e facili da generare da fogli di calcolo, database e log. Ma CSV ha limitazioni significative: non c'è uno standard per i tipi (tutto è una stringa), nessun supporto per strutture annidate e gestione ambigua dei caratteri speciali. JSON risolve questi problemi.
Gli scenari comuni includono la migrazione di dati da fogli di calcolo a web application, la trasformazione di esportazioni di database per il consumo di API, il preprocessing di dati per librerie di visualizzazione come D3.js o Chart.js.
La trasformazione di base
La conversione più semplice tratta la prima riga come intestazioni:
nome,età,cittàAlice,30,RomaBob,25,MilanoSi converte in:
[ { "nome": "Alice", "età": 30, "città": "Roma" }, { "nome": "Bob", "età": 25, "città": "Milano" }]Nota che età è ora un numero, non una stringa. CSV non ha informazioni sui tipi, quindi un buon convertitore deve dedurre i tipi durante la conversione. Il CSV to JSON Converter gestisce questo automaticamente.
Gestione dei delimitatori
La virgola è il delimitatore predefinito, ma i file CSV usano frequentemente punto e virgola, tab o pipe — specialmente nei locali europei dove le virgole sono separatori decimali.
- Delimitatori personalizzati — I valori separati da tab usano
\t - Campi tra virgolette — Quando un campo contiene il delimitatore:
"Roma, Italia" - Virgolette escape — Una virgolette dentro un campo è raddoppiata
- A capo nei campi — I campi tra virgolette possono coprire più righe
Non provare a dividere sulle virgole in modo naif — usa una libreria di parsing CSV adeguata.
Coercizione dei tipi
Poiché CSV non distingue tra 42 (numero) e "42" (stringa), hai bisogno di una strategia per la deduzione dei tipi:
function coerce(valore) { if (valore === '') return null; if (valore === 'true') return true; if (valore === 'false') return false; if (/^-?\d+(\.\d+)?$/.test(valore)) return Number(valore); return valore;}Dati annidati
CSV è piatto per progetto. Per strutture annidate, usa la notazione puntata nelle intestazioni (indirizzo.città) o la notazione parentesi (tags[0], tags[1]).
Errori comuni
- Codifica caratteri — I file CSV possono essere UTF-8, Latin-1 o Windows-1252.
- Lunghezze di riga incoerenti — Alcune righe possono avere meno colonne delle intestazioni.
- CSV senza intestazioni — Non tutti i file CSV hanno intestazioni.
- File grandi — Non caricare un CSV da 2 GB in memoria. Usa parser in streaming.
- BOM (Byte Order Mark) — Alcuni CSV iniziano con BOM UTF-8 che può rompere il parsing.
Provalo
Usa uno strumento locale per convertire CSV in JSON — nessun dato viene caricato.