Vai al contenuto
Allin

Come convertire JSON in CSV: appiattire array di oggetti in righe e colonne

Pubblicato il 18/06/2025 · 4 min di lettura · Strumenti per sviluppatori

Daniel Okonkwo

Daniel OkonkwoSviluppatore front-end e redattore Tech presso Allin

Performance web · Formati di file

Verificato su 2 fonti

Vedi il profilo
In breve

Per convertire JSON in CSV, parti da un array di oggetti. Raccogli l'unione di tutte le chiavi per formare la riga di intestazione, poi scrivi una riga per oggetto, leggendo ogni campo nell'ordine delle intestazioni. Racchiudi tra virgolette doppie qualsiasi valore che contenga una virgola, virgolette doppie o un'interruzione di riga, raddoppiando le virgolette interne. Oggetti e array annidati vanno prima appiattiti in colonne con notazione a punto, come address.city.

Una guida pratica per trasformare un array JSON di oggetti in un file CSV pulito, incluso l'appiattimento dei campi annidati e i casi limite.

Perché la forma del tuo JSON è importante

Il CSV è un formato piatto e bidimensionale: righe e colonne, nulla di più. Il JSON è un albero che può annidare oggetti dentro oggetti e array dentro array. Il caso pulito per la conversione è un array di oggetti di primo livello, dove ogni oggetto diventa una riga e ogni chiave una colonna. Tutto ciò che è più profondo va rimodellato prima di entrare in una griglia.

Poiché oggetti diversi possono avere chiavi diverse, la riga di intestazione deve essere l'unione di tutte le chiavi viste, non solo quelle del primo oggetto. Se leggi solo il primo record, le colonne successive scompaiono in silenzio e il file si disallinea.

Appiattire oggetti e array annidati

Il trucco standard è la notazione a punto. Un oggetto come {"address":{"city":"Lagos"}} diventa una colonna chiamata address.city con il valore Lagos. L'annidamento può essere profondo quanto vuoi: user.address.city è perfettamente valido. Gli array sono indicizzati per posizione, quindi tags con ["api","web"] diventa due colonne, tags.0 e tags.1.

L'appiattimento funziona bene quando gli array sono corti e di lunghezza fissa. Quando un array può crescere, le colonne indicizzate esplodono: un record con cinquanta tag produce cinquanta colonne. In quel caso è spesso più pulito tenere l'array come una singola stringa unita, come "api;web;csv", o dividere i dati in una seconda tabella collegata.

Casi limite che mandano in crisi i convertitori ingenui

Il fallimento più comune sono le virgolette. Se un valore contiene il delimitatore (di solito una virgola), una virgoletta doppia o un a capo, deve essere racchiuso tra virgolette doppie, e ogni virgoletta interna va raddoppiata. Così il valore She said "hi" diventa "She said ""hi""". Ometterlo corrompe tutte le righe successive.

Altre trappole: null contro stringa vuota (entrambi di solito appaiono come cella vuota), booleani e numeri che un foglio di calcolo può reinterpretare (un codice con zero iniziale come 007 può perdere gli zeri), e la codifica. Scrivi sempre in UTF-8 e valuta un contrassegno dell'ordine dei byte iniziale se il file deve aprirsi correttamente in fogli di calcolo datati.

Convertitore da JSON a CSVTrasforma un array JSON di oggetti in valori separati da virgole con una riga di intestazione. Accetta un intero file, così un log lungo non deve passare dagli appunti.Prova lo strumento

Domande frequenti

E se il mio JSON è un singolo oggetto, non un array?
Racchiudilo in un array per ottenere un CSV di una riga. Se preferisci ogni chiave su una riga propria, trasponilo in due colonne chiave,valore.
Quale delimitatore usare, virgola o punto e virgola?
La virgola è il valore predefinito dello standard CSV. Alcune configurazioni regionali di fogli di calcolo si aspettano il punto e virgola; se i tuoi valori contengono già virgole, un punto e virgola o una tabulazione riduce l'escape.
Come evito che gli zeri iniziali spariscano?
Gli zeri sono nel file CSV; è il foglio di calcolo a rimuoverli trattando la colonna come numero. Importa la colonna come testo, altrimenti il foglio la riformatta all'apertura.
Posso riconvertire il CSV in JSON?
In parte. Le colonne piatte si riconvertono in modo pulito, ma le chiavi a notazione a punto vanno ri-annidate e il CSV perde i tipi, quindi numeri e booleani tornano come stringhe se non li rianalizzi.

Articoli che potrebbero interessarti

Tutte le guide
SpiegazionecamelCase vs snake_case: guida alle convenzioni di denominazione nel codicecamelCase, snake_case, PascalCase e kebab-case spiegati: come appare ciascuno, dove è la convenzione e come sceglierne uno con coerenza.SpiegazioneDa CSV a JSON: i cinque casi che rompono qualsiasi convertitoreDelimitatori tra virgolette, a capo incorporati, tipi ambigui, intestazioni duplicate e codifica. Ogni caso è passato dal convertitore e qui c'è l'output esatto — compresi i due che non salva.SpiegazioneDa XML a JSON: attributi, ripetizione e la trappola dell'array a un solo elementoDue documenti che differiscono solo per quanti figli esistono producono due forme JSON diverse, e senza uno schema nessun convertitore può distinguerli. Più ciò che questo fa davvero con attributi, contenuto misto e spazi — e l'unica cosa che continua a non poter registrare.ConfrontoJSON vs XML: qual è la differenza?JSON e XML memorizzano entrambi dati strutturati come testo, ma con compromessi diversi. Ecco come appare ciascuno, dove vince ciascuno e come scegliere.SpiegazioneDa JSON a CSV quando la struttura è annidata: perché non esiste una risposta giustaI due stessi ordini escono con cinque colonne da un convertitore e dieci da un altro, e nessuno dei due sbaglia. Percorsi con punti, array di scalari, array di oggetti e record con chiavi diverse: quattro decisioni, prese per te e quasi sempre in silenzio.SpiegazioneFare l'escape di una stringa per JSON: tre caratteri sono obbligatori, e uno è una trappolaLa RFC 8259 impone l'escape di esattamente tre cose dentro una stringa JSON. Tutto il resto è facoltativo. Ciò che rompe davvero le pipeline è un surrogato spaiato: legale nel testo JSON, impossibile in UTF-8, e sostituito in silenzio non appena i tuoi dati vengono scritti.

Strumenti correlati

Fonti

Hai notato un errore in questo articolo?