Convertitore da CSV a JSON
Converti CSV in JSON o JSON in CSV, con rilevamento del delimitatore, gestione delle intestazioni e conversione dei tipi senza perdite.
L’output apparirà qui
Cosa fa questo strumento
Il CSV è ciò che ti consegnano i fogli di calcolo, le esportazioni dai database e i cruscotti di analisi; il JSON è ciò che vogliono le API e il codice. Questo strumento converte tra i due in entrambe le direzioni, nel tuo browser. Incolla del CSV e ottieni un array JSON — oggetti con le chiavi prese dalla riga di intestazione, o semplici array quando i dati non ne hanno una. Cambia direzione e un array JSON torna a essere CSV, con ogni valore racchiuso tra virgolette esattamente quanto serve.
Il lavoro avviene sul tuo dispositivo, e qui conta: il CSV è il formato in cui si esportano elenchi clienti, fatture ed estratti analitici. Nulla di tutto ciò viene caricato da nessuna parte.
Perché dividere sulle virgole non basta
Il modo ovvio di leggere il CSV — dividere ogni riga sulle virgole — si rompe con i file reali, perché il formato ha un meccanismo di escape. Un campo racchiuso tra virgolette doppie può contenere il delimitatore, una virgoletta letterale scritta come due virgolette consecutive e persino a capo, nel qual caso un record si estende su più righe del file. Questo strumento applica le regole vere (RFC 4180) con un parser carattere per carattere, così tutti e tre i casi arrivano intatti.
name,note Grace,"rear admiral, USN" Ada,"she said ""hello""" Alan,"two lines"
Questi quattro record hanno due campi ciascuno, nonostante le virgole, le virgolette e l’a capo in più. Se le virgolette sono malformate — un campo ne apre una e non la chiude mai — ottieni la riga e la colonna in cui è iniziata la virgoletta fuori controllo, invece di una tabella deformata in silenzio.
Il delimitatore spesso non è una virgola
Nonostante il nome, i valori separati da virgola spesso non lo sono. Nelle impostazioni locali in cui la virgola è il separatore decimale — quasi tutta l’Europa continentale — Excel esporta con il punto e virgola, perché lì 1,50 è un numero. Gli strumenti da database e da riga di comando producono spesso dati separati da tabulazioni, e le pipeline di log preferiscono le barre verticali. Incollare uno di questi in uno strumento che conosce solo le virgole produce un’unica colonna larghissima: la frustrazione più comune con il CSV.
Per questo il delimitatore viene rilevato anziché dato per scontato. Ogni candidato viene provato e vince quello che dà lo stesso numero di colonne su ogni riga — la coerenza, non il conteggio più alto, altrimenti un file pieno di virgole decimali sembrerebbe separato da virgole. Il delimitatore rilevato è sempre mostrato e puoi sovrascriverlo se l’ipotesi è sbagliata.
Intestazioni e forma dell’output
Con «la prima riga è un’intestazione» attivo, quella riga fornisce i nomi delle chiavi e l’output è un array di oggetti — la forma che si aspetta quasi ogni API. Disattivandolo, ogni riga diventa un array di valori, che è ciò che serve per un file che inizia direttamente con i dati.
- Una riga con meno campi dell’intestazione riceve stringhe vuote per le colonne mancanti, anziché chiavi con valore undefined.
- I nomi di intestazione duplicati vengono resi unici (id, id_2, id_3) invece di sovrascriversi a vicenda, cosa che farebbe sparire colonne in silenzio.
- Una cella di intestazione vuota diventa column_2, column_3 e così via, così nessuna chiave è la stringa vuota.
- Le righe vuote vengono saltate, come fanno gli importatori dei fogli di calcolo: un file incollato spesso termina con un a capo isolato, e una riga di valori vuoti lì sembra un bug.
Una conversione di tipi che non può perdere dati
Ogni campo CSV è testo. Convertire in numeri JSON un testo che sembra numerico di solito è ciò che si vuole — ma è anche il modo in cui i dati vengono distrutti in silenzio. Un CAP 01234 diventa 1234. Un numero d’ordine di 20 cifre diventa un decimale arrotondato. Un prezzo scritto 1.50 perde lo zero finale.
La regola usata qui evita tutto questo senza un elenco di casi speciali: un valore diventa numero solo se riconvertirlo in testo riproduce esattamente l’originale. 42 lo fa, quindi viene convertito. 01234 no, quindi resta una stringa. Nemmeno 1.50, +5, 1e5 o qualunque intero oltre il punto in cui i decimali perdono precisione. Le stringhe true e false diventano booleani; un campo vuoto resta una stringa vuota invece di diventare null, perché il CSV non sa esprimere la differenza tra «nessun valore» e «valore vuoto», e inventarne una sarebbe inventare informazione.
Ritorno al CSV
Nella direzione opposta, un array di oggetti diventa una tabella le cui colonne sono l’unione di tutte le chiavi, nell’ordine in cui compaiono per la prima volta — così righe con chiavi diverse restano allineate e una chiave mancante produce una cella vuota. Un array di array viene scritto riga per riga. Le virgolette si applicano solo dove il formato lo richiede: un valore che contiene il delimitatore, una virgoletta o un a capo viene racchiuso, e le sue virgolette interne raddoppiate.
I valori che il CSV non può rappresentare — un oggetto o un array annidato — vengono scritti come JSON dentro la loro cella invece di essere appiattiti o scartati, così nulla sparisce in una conversione. Null diventa una cella vuota.
Domande frequenti
- Perché il mio file è uscito come un’unica colonna gigante?
- Il delimitatore non è quello che lo strumento ha usato. Di solito significa un file con punto e virgola (lo standard di Excel nelle impostazioni europee, dove la virgola è il separatore decimale) o un’esportazione separata da tabulazioni. Il rilevamento di norma lo intercetta: guarda quale delimitatore viene mostrato e scegline un altro dal menu se l’ipotesi era sbagliata.
- Perché il mio ID è ancora una stringa nel JSON?
- Perché convertirlo lo cambierebbe. I numeri vengono convertiti solo quando la conversione è esattamente reversibile, quindi 01234 mantiene lo zero iniziale e gli ID lunghi mantengono ogni cifra. Se li vuoi davvero come numeri, i dati vanno scritti senza lo zero iniziale, oppure puoi convertirli in seguito dove controlli tu la precisione.
- Che fine fanno virgole e virgolette dentro un campo?
- Vengono preservate. In ingresso, un campo tra virgolette può contenere virgole, virgolette raddoppiate e persino a capo; in uscita, ogni valore che contiene il delimitatore, una virgoletta o un a capo viene racchiuso tra virgolette e le sue virgolette interne raddoppiate. Un valore attraversa CSV → JSON → CSV senza cambiare.
- I miei dati vengono caricati da qualche parte?
- No. Analisi e conversione girano interamente nel tuo browser, quindi gli elenchi clienti, le esportazioni e i report che di solito vivono in CSV non lasciano mai il tuo dispositivo.