Convertire JSON in CSV: appiattire un array di oggetti

Un array JSON di oggetti si mappa su una tabella CSV — una riga per oggetto, colonne dall’unione delle chiavi. Il vero lavoro sta nel quoting e nella gestione dei valori annidati.

La forma «array di oggetti»

CSV è una tabella piatta, quindi il JSON che si converte pulito è un array di oggetti: ogni oggetto diventa una riga e ogni chiave una colonna.

Costruire l’intestazione

Usa l’unione delle chiavi di tutti gli oggetti come intestazione, non solo quelle del primo, in modo che record con chiavi in più o in meno restino allineati. Le celle mancanti restano vuote.

Regole di quoting

Qualsiasi valore che contenga virgola, virgolette doppie o newline va racchiuso tra virgolette doppie, con le virgolette interne raddoppiate, altrimenti le colonne si disallineano.

Valori annidati

Oggetti e array non hanno una forma piatta in CSV: scrivili come testo JSON dentro la cella (reversibile) o appiattiscili in colonne puntate come address.city.

Ordine dell’intestazione e stabilità

Ordina l’unione delle chiavi o blocca l’ordine a quello delle chiavi del primo record con le extra accodate alla fine. Un ordine stabile rende utili i diff fra export e evita di rimescolare le colonne a ogni esecuzione.

Formato di date e numeri

I fogli di calcolo reinterpretano i valori in modo aggressivo: gli ID numerici lunghi perdono precisione, le date ISO vengono riformattate, gli zeri iniziali spariscono. Se un valore deve fare un round-trip esatto, mettilo tra virgolette e prefissalo con un apostrofo quando lo incolli in Excel.

Compatibilità con Excel e Google Sheets

Usa terminazioni CRLF e un BOM (UTF-8 con byte-order mark) affinché Excel riconosca l’Unicode. In Google Sheets il BOM è opzionale, ma la virgola come separatore e l’escape con virgolette doppie restano validi.

Da CSV a JSON

Splitta le righe in modo consapevole delle virgolette (non fare uno split ingenuo sulla virgola), usa la prima riga come nomi di campo e tenta di convertire per colonna numeri, booleani e date ISO. Il round-trip in questo strumento lascia le stringhe come stringhe, salvo che una colonna sia totalmente numerica.

Trappole comuni

Questi sono i problemi che rompono la maggior parte degli export CSV.

  • Virgole non escapate dentro valori stringa
  • Newline nelle celle senza virgolette intorno
  • Codifiche miste (UTF-8 vs Latin-1) che producono mojibake
  • Interi grandi (ID) silenziosamente troncati dai fogli di calcolo
  • Booleani salvati come stringhe "true"/"false" invece di TRUE/FALSE