Convertire CSV in JSON e viceversa senza rovinare i dati
Il CSV è una tabella di testo semplice: un record per riga, con i campi separati da un delimitatore, di solito una virgola. Si rompe quando un campo contiene il delimitatore, un doppio apice o un a capo, perché il lettore deve distinguere la struttura dal contenuto. Segui le regole di racchiusione tra apici, controlla il delimitatore e la riga di intestazione, e mantieni come testo i numeri con zeri iniziali. Il resto dell'articolo spiega cosa una conversione di andata e ritorno può conservare e cosa no.
CSV in JSONServe CSV come JSON, o viceversaUsalo gratisCos'è davvero un file CSV
Il CSV non ha un unico standard ufficiale, ma la RFC 4180 descrive la forma più diffusa, e la maggior parte dei lettori la segue. Le sue regole principali stanno in un breve elenco:
- Ogni record occupa una riga propria, e la RFC specifica che le righe terminano con un ritorno a capo e un avanzamento di riga, CRLF.
- I campi sono separati da virgole.
- Un campo che contiene una virgola, un doppio apice o un a capo viene racchiuso tra doppi apici.
- Un doppio apice dentro un campo racchiuso tra apici si scrive come due doppi apici.
Quindi la riga 1001,"Smith, Ann",02134 ha tre campi, perché la virgola tra gli apici è contenuto. Un divisore che taglia a ogni virgola ne trova quattro. Il lettore di fixmint applica queste regole: un campo racchiuso tra apici può contenere il delimitatore, gli a capo e i doppi apici raddoppiati, e un apice non chiuso viene segnalato indicando la riga in cui inizia.
Perché cambia il delimitatore
La virgola è il delimitatore predefinito della RFC, ma dove la virgola è il separatore decimale, quindi 1,5 significa un e mezzo, i fogli di calcolo spesso salvano il CSV con il punto e virgola. I file separati da tabulazioni (TSV) evitano il conflitto nella maggior parte dei dati, perché le tabulazioni compaiono raramente nel testo.
Il menu Delimitatore offre Auto, Virgola, Punto e virgola, Tabulazione e Barra verticale. Auto legge le prime dieci righe, conta ciascun candidato al di fuori degli apici e sceglie quello con il conteggio più regolare per riga. Scegli tu il delimitatore quando Auto sbaglia.
Convertire con fixmint
L'esempio pratico usa le opzioni predefinite di lo strumento CSV in JSON.
Esempio pratico
Incolla questo CSV, con Prima riga come intestazione spuntato:
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Con Converti numeri disattivato e rientro JSON impostato a 2 spazi, lo strumento restituisce:
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Con Converti numeri attivato, id e zip 10001 diventano numeri, e 02134 resta testo.
Passaggi
- Incolla il CSV, oppure trascina un file .csv, .tsv, .txt o .json.
- Controlla Prima riga come intestazione, Delimitatore e Converti numeri. Scegli un rientro JSON di 2 spazi, Tabulazione o Minificato.
- Copia il risultato, oppure scaricalo come .json.
Mantenere i numeri come testo
I numeri JSON non possono avere zeri iniziali, quindi 02134 non è un numero JSON valido. I CAP, i numeri di telefono e i codici prodotto devono restare testo, altrimenti lo zero scompare. Con Converti numeri attivato, lo strumento converte 10001 ma mantiene 02134 come stringa. L'opzione è disattivata per impostazione predefinita. Converte solo i valori con il punto come separatore decimale, quindi 1,5 in un file con punto e virgola resta com'è.
Anche gli identificativi lunghi richiedono attenzione. JavaScript, che esegue gran parte dei JSON nel browser, memorizza i numeri come valori in virgola mobile a 64 bit. I numeri interi sono esatti solo fino a 9.007.199.254.740.991, cioè due elevato alla 53 meno 1. Il numero 12345678901234567890 diventa 12345678901234567000 quando un programma JavaScript lo legge. Lo strumento scrive le cifre come le hai digitate, ma un programma che analizza il JSON in JavaScript le arrotonderà. Conserva gli ID come stringhe. Il formattatore JSON mantiene anch'esso questi numeri esattamente come digitati, e indica quanti ne ha conservati.
JSON annidato e ritorno al CSV
Il CSV è piatto, mentre il JSON può essere annidato. Convertendo JSON in CSV si crea una colonna per ogni chiave presente in tutti gli oggetti, nell'ordine in cui ogni chiave compare per la prima volta. Un oggetto o un elenco annidato finisce nella sua cella come testo JSON, un null diventa una cella vuota, e true e false vengono scritti come parole. Le righe sono unite con CRLF, e un campo viene racchiuso tra apici solo quando contiene il delimitatore, un apice, un a capo o spazi all'inizio o alla fine.
L'input che inizia con [ o { viene letto come JSON. Il pulsante a chip cambia direzione, con etichetta CSV → JSON oppure JSON → CSV. Nella direzione JSON → CSV, le opzioni di output mostrano un menu Delimitatore e l'opzione Per Excel.
Una conversione di andata e ritorno perde informazioni. Un null e una stringa vuota diventano entrambi una cella vuota, e la struttura annidata non si recupera, quindi conserva il JSON originale se ti serve la sua struttura.
Excel, UTF-8 e il byte order mark
Un file CSV è una sequenza di byte, e il lettore deve conoscerne la codifica. UTF-8 gestisce lettere accentate e altri alfabeti. Un byte order mark, tre byte all'inizio del file, indica che il file è in UTF-8. Senza di esso, alcuni programmi per fogli di calcolo leggono il file con una code page locale, e le lettere accentate diventano caratteri strani. Inoltre, i fogli di calcolo spesso trasformano 02134 in 2134 quando aprono un CSV.
L'opzione Per Excel aggiunge il byte order mark solo al CSV scaricato, mai al testo copiato, e solo nella direzione JSON → CSV. Il lettore rimuove un byte order mark dall'input, quindi un file che ne ha già uno si converte senza errori.
Casi limite
- Righe irregolari. Con l'intestazione attiva, una riga corta viene completata con valori vuoti, mentre una riga più lunga mantiene i valori in più come column_N. Il risultato indica quante righe differiscono dall'intestazione.
- Intestazioni ripetute o vuote. Un nome ripetuto riceve _2, _3 e così via, e un nome vuoto diventa column_N. Entrambe le modifiche evitano che due chiavi si sovrascrivano.
- Virgolette curve. Le virgolette tipografiche di un elaboratore di testi non sono apici CSV, quindi un campo come “Smith, Ann” si spezza alla virgola. Raddrizzale prima con correggi testo incollato oppure come descritto in la guida alle virgolette curve.
- A capo dentro gli apici. Un campo su due righe è un unico record, ma rimuovi righe duplicate divide il testo a ogni a capo, quindi tratterebbe le due metà come righe separate. Converti in JSON e confronta gli oggetti, oppure controlla a mano. Lo strumento resta utile per le liste con un valore per riga.
- File grandi. La casella del risultato mostra i primi 100.000 caratteri, ma Copia e il download includono l'intero output.
- JSON non valido. Il convertitore segnala riga e colonna dell'errore, con un accento circonflesso sotto il carattere. Il formattatore JSON spiega gli errori più comuni, e la guida agli errori JSON li approfondisce.
Spazi sparsi attorno ai campi, righe vuote in mezzo al file e apici usati in modo incoerente causano la maggior parte dei problemi del CSV, ben prima che il delimitatore conti. Pulisci prima il CSV, poi converti.
Tradotto dal Originale in inglese con l'assistenza dell'IA.
Commenti
Nessun commento per ora. Sii il primo.


