Convertire CSV in JSON

Qui converti CSV in JSON gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. La conversione avviene dentro il tuo browser, quindi il file non viene mai caricato. Funziona allo stesso modo su Windows, macOS e Linux e anche su iPhone e Android, e continua a funzionare anche se stacchi la connessione.

  • Dove gira Nel tuo browser. Il file non viene mai caricato.
  • Senza perdita Non si butta via niente. JSON conserva esattamente ciò che CSV teneva.
  • Limite di dimensione Fino a 100 MB per file, gratis e senza account.

Fino a 100 file alla volta. Formati diversi insieme non sono un problema.

Chi arriva qui, e con che cosa in mano

Questa conversione serve a chi deve dare in pasto dei dati a qualcosa che parla JSON: un endpoint da provare, uno script Node, un file di seed, un import in MongoDB, un mock per il frontend mentre l’API vera non esiste ancora. Il CSV è arrivato da un foglio di calcolo o da un’esportazione gestionale, e la destinazione vuole oggetti.

È una richiesta diversa da quella di chi converte un CSV in XLSX. Lì il problema è che Excel indovina i tipi male; qui il problema è che JSON i tipi li pretende, e qualcuno deve deciderli. Il resto di questa pagina è essenzialmente su chi prende quella decisione e su quali basi.

Che forma prende il risultato

Il file che ottenete è un array di oggetti: una riga del CSV diventa un oggetto, e le intestazioni della prima riga diventano le chiavi. È la forma che quasi ogni consumatore si aspetta — `JSON.parse` seguito da un `map`, oppure un `POST` diretto verso qualcosa che accetta una collezione.

Non è l’unica forma possibile. Esiste anche l’array di array, che conserva l’ordine delle colonne e pesa meno, ed esiste il JSON Lines, un oggetto per riga senza parentesi attorno, che è ciò che vogliono gli strumenti che leggono in streaming. Chi ha bisogno di quelle forme di solito lo sa già e ha uno script; chi arriva da un foglio di calcolo vuole l’array di oggetti, ed è quello che viene prodotto.

La domanda dei tipi, che è tutta la conversione

Un CSV non ha tipi. Ogni cella è testo, sempre, anche quando contiene 42. JSON invece distingue: `42` e `"42"` sono due cose diverse, e un consumatore che si aspetta un numero e riceve una stringa fallisce alla riga dopo. Quindi la conversione deve decidere, per ogni singolo valore, se toglierlo dalle virgolette o no.

La regola applicata qui è cauta: diventa numero soltanto ciò che è inequivocabilmente un numero e che sopravvive al giro di andata e ritorno senza cambiare. `42` diventa `42`. `3.14` diventa `3.14`. `007` resta `"007"`, perché trasformarlo in `7` distruggerebbe informazione che qualcuno ha messo lì apposta. Un codice fiscale, un CAP e un numero di conto restano stringhe per la stessa ragione, ed è esattamente il contrario di quello che farebbe un foglio di calcolo con gli stessi dati.

Le celle vuote diventano null, e non si torna indietro

Una cella vuota in un CSV è ambigua in modo irriducibile. Può significare «questo valore non esiste», può significare «stringa vuota», e nel file non c’è nulla che distingua i due casi: entrambi si scrivono come niente fra due separatori.

Qui una cella vuota diventa `null`, non una stringa vuota: una riga `1,,3` sotto le intestazioni `a,b,c` esce come `{"a":1,"b":null,"c":3}`. È la conseguenza voluta della stessa rilevazione dei tipi che trasforma `1` in un numero anziché in `"1"`, e conviene saperlo prima, perché il passaggio non è reversibile: dal `null` non si torna indietro a distinguere quali colonne intendevano davvero una stringa vuota. Se la vostra destinazione vuole `""` — uno schema JSON che pretende una stringa rifiuta `null`, e una colonna dichiarata NOT NULL rifiuta la riga — la trasformazione è un `map` di una riga, e vale la pena scriverla voi, che sapete che cosa significano le vostre colonne.

Il punto e virgola, che in Italia è la norma

Un CSV esportato da un sistema configurato in italiano usa quasi sempre il punto e virgola, non la virgola. Il motivo è la virgola decimale: `1,5` è un numero e mezzo, e non può contemporaneamente separare due campi. Lo stesso vale per il tedesco, il francese e lo spagnolo, il che significa che una buona parte dei CSV in circolazione non contiene una sola virgola di separazione.

Il delimitatore viene rilevato dal file. Se il rilevamento sbaglia — succede con file a una sola colonna, dove non c’è nulla da rilevare — potete impostarlo a mano fra le opzioni sotto il risultato e riconvertire. Il segnale che è andata storta è immediato: ottenete oggetti con una sola chiave, il cui nome è tutta la riga di intestazione.

La virgola decimale, che è un problema separato

Il delimitatore è metà della questione italiana; l’altra metà è che dentro le celle i numeri sono scritti `1.234,56`. JSON non ammette quella forma: un numero JSON usa il punto come separatore decimale e non ammette separatori di migliaia, punto.

Un valore così resta quindi una stringa, perché convertirlo richiederebbe di indovinare la convenzione e indovinare male su un prezzo è peggio che lasciarlo com’è. Se vi servono numeri veri, la strada pulita è riesportare il CSV con il punto decimale — quasi ogni gestionale ha l’opzione — invece di riparare a valle. Sistemare `1.234,56` con una sostituzione di stringhe funziona finché non incontrate un file dove il punto era davvero il decimale, e a quel punto avete moltiplicato per mille senza accorgervene.

Le intestazioni diventano chiavi, e le chiavi durano

La prima riga del CSV fornisce i nomi delle proprietà, così come sono scritti. Niente viene messo in camelCase, ripulito o abbreviato: una colonna chiamata `Data ordine` diventa una chiave `"Data ordine"`, con lo spazio e la maiuscola.

È deliberato, perché rinominare significherebbe inventare una convenzione e imporla a un file che finirà in un codice che non conosciamo. Vale però la pena guardare le intestazioni prima di convertire: una chiave con uno spazio dentro si legge in JavaScript solo con la notazione a parentesi quadre, e se il CSV lo controllate voi, cambiare l’intestazione nel foglio è più pulito che convivere con `riga["Data ordine"]` per sempre.

Le virgolette, i ritorni a capo dentro le celle, e i file che sembrano rotti

Un campo CSV può contenere il delimitatore, le virgolette e perfino un ritorno a capo, purché sia racchiuso fra virgolette doppie e le virgolette interne siano raddoppiate. Un indirizzo su due righe dentro una cella è legale e frequente nelle esportazioni di anagrafiche.

Il parser usato qui segue quella regola, quindi un campo multiriga sopravvive e diventa una stringa JSON con dentro un `\n`. Il caso che invece non si salva è il file scritto da qualcuno che ha concatenato dei valori a mano dimenticando di raddoppiare le virgolette: lì il conteggio dei campi salta a metà file, e nessun parser può indovinare dove volevate che finisse una cella. Se il risultato ha righe con un numero di chiavi diverso dalle altre, è quasi sempre questo.

Perché questi dati non dovrebbero passare da un server

I CSV che finiscono convertiti in JSON sono quasi sempre dati reali: clienti, ordini, utenti, indirizzi, a volte un’esportazione completa da un gestionale. È la categoria di file che non si carica su un servizio trovato in una pagina di risultati, e la maggior parte dei convertitori online fa esattamente questo.

Qui la conversione avviene nella vostra scheda del browser. Il parser è JavaScript che la pagina ha già scaricato, il file viene letto dal vostro disco in locale e il JSON viene scritto in memoria. Non parte nessuna richiesta con dentro i vostri dati, e questa è una cosa che si verifica invece di crederla: aprite gli strumenti di sviluppo, guardate la scheda di rete e convertite qualcosa.

Quando il JSON è la destinazione sbagliata

JSON è un formato di testo e non è compatto. Un CSV di cinquanta megabyte diventa facilmente il doppio o il triplo, perché ogni riga ripete tutti i nomi delle colonne. Su qualche milione di righe questo smette di essere un dettaglio: il file diventa scomodo da spostare e, se qualcuno prova a caricarlo tutto con `JSON.parse`, da leggere.

Se i vostri dati hanno quelle dimensioni, il JSON Lines o il Parquet sono la risposta giusta e questa pagina non lo è. Vale la pena dirlo prima che dopo: un convertitore che accetta qualsiasi cosa senza commentare vi lascia scoprire il problema quando il file è già nella pipeline di qualcun altro.

Come convertire CSV in JSON

  1. Trascina il tuo file CSV su questa pagina, oppure fai clic per sceglierne uno.
  2. Scegli JSON come destinazione. La conversione avviene nel tuo browser e il file non viene caricato.
  3. Scarica il file JSON finito.

CSV o JSON: cosa cambia

CSV a confronto con JSON
CSVJSON
Nome completoComma-Separated ValuesJavaScript Object Notation
Estensione del file.csv.json
Tipo di mediatext/csvapplication/json
Prima pubblicazione19722001
SpecificaRFC 4180RFC 8259
LicenzaStandard apertoStandard aperto
Situazione attualeAttualeAttuale
Si apre nel browserNessun browserTutti i browser
Valutato al suo postoXLSX, ParquetXML, YAML, NDJSON

Che cosa resta

Non si scarta nulla. CSV e JSON salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.

Aprire il risultato

JSON si apre in qualsiasi browser attuale. CSV raggiunge ancora meno browser. Se il file va su una pagina web o in un modulo, di solito è tutto il motivo della conversione.

I programmi di sempre non coincidono: CSV si apre in Microsoft Excel, LibreOffice Calc e pandas, JSON in Visual Studio Code, jq e Postman, quindi chi riceve il risultato ha bisogno di uno del secondo gruppo.

A che cosa serve ciascun formato

CSV è stato pubblicato nel 1972. È descritto in RFC 4180, e vale la pena conoscerlo se il file deve sopravvivere allo strumento che lo ha scritto.

JSON risale al 2001, descritto in RFC 8259. Visual Studio Code, jq e Postman lo leggono.

CSV è stato pubblicato nel 1972 e JSON nel 2001. Il più vecchio è in genere il file più sicuro da consegnare; il più recente fa lo stesso lavoro con meno byte.

Da CSV a JSON: domande frequenti

Il mio file CSV viene caricato da qualche parte?

No. Questa conversione avviene interamente nel tuo browser, quindi il file non esce dal tuo dispositivo. Puoi controllarlo da solo: apri la scheda di rete degli strumenti per sviluppatori e converti qualcosa. Vedrai la pagina stessa e le richieste di statistica e di pubblicità con cui questo servizio si paga, e nemmeno una che porti il tuo file.

Convertire CSV in JSON è gratis?

Sì. Senza account, senza filigrana e senza una quota giornaliera da consumare: gira sulla tua macchina, quindi puoi tornare quante volte vuoi. Il browser lavora file fino a 100 MB, 100 per volta.

Si perde qualità convertendo CSV in JSON?

No. JSON conserva lo stesso contenuto senza buttare via niente: il risultato è identico in qualità all’originale.

La conversione da CSV a JSON è senza perdita?

Non si scarta nulla. CSV e JSON salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.

Altro su questi formati