DataSwap Convertitori di file e dati veloci, senza registrazione

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.