Convertitore da CSV a JSON
Incolla il CSV qui sotto — la prima riga viene usata come intestazione. I campi tra virgolette con virgole, a capo e virgolette con escape incorporati vengono analizzati correttamente, non divisi in modo ingenuo. Nulla di ciò che incolli lascia il tuo browser.
Perché un vero parser CSV è importante
Il CSV sembra semplice — dividi sulle virgole, dividi sugli a
capo, fatto — finché un campo non contiene esso stesso una
virgola. La specifica CSV risponde racchiudendo tale campo tra
virgolette doppie, e facendo l'escape di ogni virgoletta
letterale al suo interno raddoppiandola (""). Un
campo può persino contenere un vero a capo, purché sia tra
virgolette. Un parser ingenuo con split(",") non sa
nulla di tutto ciò: tratta ogni virgola come un confine di
colonna, così un singolo campo tra virgolette come "Smith, John" viene tagliato in due colonne e ogni
campo successivo in quella riga si disallinea — corruzione
silenziosa, non un errore. Questo strumento invece legge
l'input un carattere alla volta, tenendo traccia di quando si
trova dentro un campo tra virgolette, così le virgole e gli a
capo tra virgolette restano parte del campo a cui appartengono.
Inoltre, questa pagina usa il punto e virgola
come delimitatore predefinito invece della virgola. Non è un
capriccio: in italiano (e nella maggior parte dei locale
europei) la virgola è già impegnata come separatore decimale — 3,14 è pi greco, non due colonne separate. È per
questo che Excel in italiano esporta CSV con punto e virgola
come predefinito, e questo strumento rispecchia la stessa
convenzione così puoi incollare le tue esportazioni così come
sono senza dover cambiare il selettore ogni volta.
Esempio pratico
Input:
nome;città "Smith; John";"New York" "O""Brien";Boston
La prima riga ha un punto e virgola dentro un nome tra
virgolette — un parser ingenuo lo leggerebbe come quattro
colonne invece di due e rovinerebbe il resto della tabella. La
seconda riga ha una virgoletta con escape "", che
deve collassare in una singola virgoletta letterale ". Questo strumento produce:
[
{
"nome": "Smith, John",
"città": "New York"
},
{
"nome": "O\"Brien",
"città": "Boston"
}
]
— due righe pulite, il punto e virgola incorporato conservato
come parte del nome, e O""Brien correttamente
collassato in un singolo O"Brien.
Domande frequenti
Perché non dividere semplicemente ogni riga sulle virgole?
Perché il vero CSV permette una virgola dentro un campo, purché il campo sia racchiuso tra virgolette doppie — un nome come "Smith, John" è un unico campo, non due. Uno split(",") ingenuo spezzerebbe quel campo a metà e sposterebbe ogni colonna successiva fuori allineamento per il resto della riga. Questo strumento usa un vero parser carattere per carattere che tiene traccia di quando si trova dentro un campo tra virgolette, così una virgola lì è solo testo, non un delimitatore.
Il mio CSV usa il punto e virgola invece della virgola — funziona comunque?
Sì — usa il selettore del delimitatore sopra il campo di input per passare tra virgola, punto e virgola e tabulazione. Per questo, tra l'altro, questa pagina usa il punto e virgola come opzione predefinita: è il formato di esportazione predefinito di Excel in italiano, proprio perché in questo locale la virgola è già usata come separatore decimale (quindi "3,14" significa pi greco, non due valori) — un file delimitato da virgole sarebbe lì genuinamente ambiguo.
Cosa succede se una riga ha più o meno campi della riga di intestazione?
Non va in crash né disallinea silenziosamente i tuoi dati. Se una riga è corta, i campi finali mancanti vengono riempiti con stringhe vuote. Se una riga ha campi extra oltre l'ultima intestazione, quegli extra vengono scartati. Quando questo accade in qualsiasi punto del file, appare una nota sopra l'output che indica quante righe sono state interessate, così puoi controllare la fonte.
Il mio CSV viene caricato da qualche parte?
No. L'analisi avviene interamente nel tuo browser con normale JavaScript — nulla di ciò che incolli viene inviato, salvato o registrato su un server. Vale per ogni strumento di questo sito.