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 — Sviluppatore front-end e redattore Tech presso Allin
Performance web · Formati di file
Verificato su 2 fonti
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.
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 →Strumenti correlati
Fonti
Hai notato un errore in questo articolo?