Json To Csv LogoJson To Csv

Esiste un modo per convertire JSON in CSV? Sì — 5 modi, scegli in base alla tua situazione (Guida 2026)

Sì. Esistono cinque modi pratici per convertire JSON in CSV, e quello giusto dipende dalla tua situazione: un file una tantum, una destinazione in foglio di calcolo, un lavoro ricorrente o una pipeline. Eccoli tutti, testati sullo stesso file, più i casi in cui la conversione in sé è la mossa sbagliata.

Aggiornato: 2026-10-179 min di lettura

Il file del personale su cui vengono testati tutti i metodi

La maggior parte delle guide alla conversione descrive ogni metodo in astratto, e questo le rende impossibili da confrontare. Questa fa il contrario: ogni modo qui sotto viene eseguito sullo stesso file di tre record, così gli output sono direttamente confrontabili. Il file è piccolo ma non banale: ha un oggetto annidato (dept con team e floor), una lista (skills) e i due casi limite che mandano in crisi le conversioni reali: un booleano (active) e una lista vuota (Lina non ha skills).

Se un metodo non riesce a gestire questo file in modo pulito, non gestirà bene nemmeno il tuo file reale. Se ci riesce, sai esattamente che aspetto ha il suo output prima di affidargli qualcosa di più grande. Tieni il file a mente mentre leggi: la risposta corretta ha sei colonne (id, name, dept.team, dept.floor, skills, active) e tre righe, con la cella skills di Ana che riporta chat; phone e la cella skills di Lina vuota.

staff.json, the shared test file
[
  { "id": 1, "name": "Ana", "dept": { "team": "Support", "floor": 2 }, "skills": ["chat", "phone"], "active": true },
  { "id": 2, "name": "Ken", "dept": { "team": "Sales", "floor": 3 }, "skills": ["email"], "active": false },
  { "id": 3, "name": "Lina", "dept": { "team": "Support", "floor": 2 }, "skills": [], "active": true }
]

Modo 1: un convertitore online — senza installare nulla

Apri un convertitore gratuito da JSON a CSV online, incolla il JSON oppure carica il file e scarica il CSV. Questo è tutto il metodo, e per un file una tantum è quello giusto: non c'è nulla da installare, nulla da imparare, e il risultato è pronto in meno di un minuto. Il convertitore di questo sito gira interamente nel tuo browser, quindi il file non lascia mai il tuo computer, e il suo interruttore di appiattimento decide come vengono gestiti i dati annidati.

Con l'appiattimento attivato, il file del personale si converte esattamente nella risposta a sei colonne qui sopra: dept diventa dept.team e dept.floor, la lista skills si unisce in una sola cella con il separatore punto e virgola, e la lista vuota di Lina diventa una cella vuota. Con l'appiattimento disattivato, lo stesso file mantiene dept e skills come testo JSON dentro singole celle: CSV valido, ma non una tabella che puoi ordinare o filtrare. La nostra guida precedente sull'appiattimento di JSON in CSV documenta l'interruttore cella per cella, compresi i suoi casi limite.

I limiti onesti: un convertitore online è uno strumento per un file alla volta. Se devi convertire cinquanta file ogni mattina, oppure la conversione deve avvenire dentro un altro programma, uno dei modi qui sotto si adatta meglio. E se è la lista stessa ciò che vuoi analizzare — una riga per skill, non una riga per persona — nessun convertitore online lo fa; ti serve la ricetta explode nella nostra guida su come appiattire i dati JSON.

Way 1 output: online converter, flattening on (verified)
id,name,dept.team,dept.floor,skills,active
1,Ana,Support,2,chat; phone,true
2,Ken,Sales,3,email,false
3,Lina,Support,2,,true

Modo 2: il foglio di calcolo che hai già — Excel Power Query

Se il CSV è destinato comunque a un foglio di calcolo, potresti non aver bisogno di un convertitore: Excel sa leggere JSON direttamente tramite Power Query. Apri una cartella di lavoro vuota, vai a Dati, Recupera dati, Da file, Da JSON, scegli il file, e Power Query ti mostra i record. Espandi la colonna dept per appiattire l'oggetto annidato nelle colonne team e floor, espandi oppure estrai la colonna skills a seconda che tu voglia una riga per skill o una sola cella unita, poi Chiudi e carica. Il risultato arriva come una vera tabella Excel, pronta da filtrare e da usare nelle tabelle pivot.

Due cose da sapere prima di iniziare. Primo, il passaggio di espansione va fatto per ogni colonna annidata: un file con tre livelli di annidamento richiede tre espansioni, ed è facile saltarne una e ritrovarsi con una colonna di valori Record. Secondo, aprire un CSV finito in Excel ha le sue insidie: un file UTF-8 può aprirsi con caratteri confusi, e un valore come 007 può perdere lo zero iniziale — ed è per questo che la nostra guida su come ricavare un CSV da JSON raccomanda l'abitudine di convalidare reimportando: apri il risultato, controlla i caratteri, controlla i codici, e solo allora consideralo finito.

Fogli Google è l'unica lacuna di questo modo. Fogli non ha un'importazione nativa di JSON: non esiste alcuna opzione File, Importa, JSON. Le strade pratiche sono passare prima da un convertitore online, oppure un piccolo Apps Script che recupera e analizza il JSON. Se sei già in Fogli, la strada del convertitore è più veloce; se l'importazione deve ripetersi ogni giorno, vince la strada dello script.

Modo 3: codice che usi già — Python o jq

Se scrivi già codice, Python e jq sono i due cavalli di battaglia, e divergono in un punto istruttivo. La funzione json_normalize di pandas in Python appiattisce gli oggetti annidati in colonne con notazione a punti in automatico — dept diventa dept.team e dept.floor senza passaggi aggiuntivi — ma lascia le liste come stringhe repr di Python, a meno che tu non le unisca da solo. Eseguila senza l'unione e la cella skills di Ana riporta ['chat', 'phone'], che è una lista stampata come testo, non un valore utilizzabile. La correzione con unione in una riga è nello snippet qui sotto, e l'output poi coincide esattamente con quello del convertitore online.

jq adotta l'approccio opposto: non fa nulla in automatico, e ogni colonna è esplicita. Nomini ogni campo, scegli tu l'unione, e ottieni esattamente la riga di intestazione che hai scritto. Quella esplicitezza è la vera forza di jq per conversioni una tantum di file scomodi, e la sua debolezza per file larghi: un record con quaranta campi significa quaranta espressioni. Per il file del personale, entrambi gli strumenti producono le stesse sei colonne e tre righe, ed è questo il punto: il modo cambia, la risposta corretta no.

Un'altra nota su Python per il caso ricorrente: json_normalize più explode trasforma una lista in una riga per elemento, che è la mossa explode che nessun convertitore online offre. Se la tua analisi ha bisogno di una riga per skill, quella è la ricetta: è trattata per intero, con un equivalente verificato in jq, nella nostra guida su come appiattire i dati JSON.

Way 3 output: Python, json_normalize plus join (verified)
import json
import pandas as pd

rows = json.load(open('staff.json'))
df = pd.json_normalize(rows)
df['skills'] = df['skills'].apply(lambda v: '; '.join(v))
df.to_csv('staff.csv', index=False)

# staff.csv:
# id,name,skills,active,dept.team,dept.floor
# 1,Ana,chat; phone,True,Support,2
# 2,Ken,email,False,Sales,3
# 3,Lina,,True,Support,2

Modo 3, continuazione: il one-liner di jq

La versione jq della stessa conversione è un unico comando. La riga di intestazione è scritta a mano, poi ogni record si mappa su una riga: i campi annidati si raggiungono con i punti (dept.team), la lista si unisce con il punto e virgola, e @csv gestisce le virgolette. Eseguilo sul file del personale e ottieni le stesse tre righe della versione Python, con una sola differenza estetica: jq mette tra virgolette ogni campo stringa, così la riga di intestazione riporta "id","name",... invece di id,name,.... Entrambi sono CSV validi; ogni foglio di calcolo e ogni parser li leggono allo stesso modo.

jq si guadagna il suo posto per un secondo motivo: funziona su file troppo grandi per essere aperti in un editor. Il one-liner qui sopra carica l'intero file in memoria, il che va bene per qualsiasi cosa fino a decine di megabyte, ma jq ha anche una modalità streaming (il flag --stream) che elabora un file record per record. Se il tuo file JSON è di centinaia di megabyte, la strada è jq in streaming oppure uno script Python a blocchi; una scheda del browser no.

Way 3 output: jq, explicit columns (verified)
jq -r '(["id","name","dept.team","dept.floor","skills","active"] | @csv),
  (.[] | [.id, .name, .dept.team, .dept.floor, (.skills | join("; ")), .active] | @csv)' staff.json

# "id","name","dept.team","dept.floor","skills","active"
# 1,"Ana","Support",2,"chat; phone",true
# 2,"Ken","Sales",3,"email",false
# 3,"Lina","Support",2,"",true

Modo 4: il tuo editor — VS Code

Se vivi già in VS Code, la conversione può avvenire senza uscire dall'editor. La strada più veloce è il terminale integrato: apri la cartella, apri un terminale dentro VS Code, ed esegui il comando Python o jq del Modo 3: il CSV di output compare nella stessa cartella, e le estensioni di visualizzazione Excel di VS Code o l'anteprima integrata ti permettono di controllarlo subito. Per chi preferisce i clic ai comandi, estensioni come Rainbow CSV o un'estensione da JSON a CSV convertono il file aperto tramite la palette dei comandi.

Il vero vantaggio della strada dell'editor è l'iterazione: quando il JSON è un file di configurazione o una risposta API che stai già modificando, convertire sul posto ti tiene nel contesto, e la vista diff dell'editor ti mostra esattamente cosa è cambiato. La guida completa — estensione, terminale e un'attività da un solo tasto — è nella nostra guida a VS Code, compresi gli inganni (un'estensione che trasforma i dati annidati in stringhe, un terminale che scrive nella cartella sbagliata). In breve: VS Code è un ottimo posto dove convertire, ma la conversione in sé è comunque uno degli altri modi con indosso un costume da editor.

Modo 5: dentro la tua app — una chiamata a libreria

Il quinto modo è per quando la conversione non è un'attività una tantum ma parte di qualcosa che stai costruendo: un pulsante di esportazione in una dashboard, un report notturno, una pipeline di dati. Allora non ti serve affatto uno strumento: chiami una funzione. Lo snippet qui sotto ne è il nucleo in JavaScript: percorri i nomi di colonna con i punti, unisci i valori di lista, fai l'escape di qualsiasi cosa contenga una virgola, virgolette o un a capo, raddoppiando le virgolette e avvolgendo la cella. Eseguilo sul file del personale e produce esattamente le stesse righe del convertitore online, il che non è una coincidenza: il motore del convertitore di questo sito è la stessa idea, con i casi limite (righe irregolari, liste annidate, oggetti vuoti) gestiti.

La decisione qui è costruire contro prendere in prestito, e la risposta onesta di solito è prendere in prestito: json_normalize di pandas, una libreria CSV nel tuo linguaggio, oppure il modello di motore del convertitore qui sotto batteranno una versione fatta a mano sui casi limite. Scrivi la tua solo quando la conversione ha regole che nessuna libreria offre: uno schema di appiattimento personalizzato, un'unione specifica del dominio, un requisito di streaming. E se la conversione gira su un server, ricorda la differenza di privacy: un convertitore nel browser tiene il file sul computer dell'utente, mentre un convertitore su server vede i dati.

Way 5 output: a library call in JavaScript (verified)
const rows = require('./staff.json');
const cols = ['id', 'name', 'dept.team', 'dept.floor', 'skills', 'active'];
const get = (r, p) => p.split('.').reduce((o, k) => o?.[k], r);
const esc = v => { const s = String(v ?? '');
  return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; };
console.log(cols.join(','));
for (const r of rows)
  console.log(cols.map(c => esc(c === 'skills' ? (get(r, c) || []).join('; ') : get(r, c))).join(','));

# id,name,dept.team,dept.floor,skills,active
# 1,Ana,Support,2,chat; phone,true
# 2,Ken,Sales,3,email,false
# 3,Lina,Support,2,,true

Quando non esiste un buon modo

Una guida che dicesse solo sì mentirebbe per omissione, perché ci sono file in cui la conversione in CSV è la mossa sbagliata, e saperlo fa risparmiare più tempo di qualsiasi strumento. Il primo caso sono i dati profondamente annidati o a forma di grafo: un thread di commenti in cui i commenti contengono risposte che contengono risposte, oppure record che si rimandano l'un l'altro. Appiattire tutto ciò in colonne produce o centinaia di colonne rade o un riepilogo con perdita di dati, e la risposta onesta è tenere tutto come JSON oppure interrogarlo con jq invece di appiattirlo.

Il secondo caso sono gli schemi misti: un file in cui un record ha chiavi che gli altri non hanno, oppure la stessa chiave contiene una stringa in un record e un oggetto in un altro. Un convertitore gestisce questo caso prendendo l'unione di tutte le chiavi e lasciando celle vuote, il che è corretto ma spesso inutile: la tabella risultante è per lo più buchi. Prima di convertire, chiediti se i record sono davvero lo stesso tipo di cosa; in caso contrario, dividi il file per tipo di record prima, poi converti ogni parte.

Il terzo caso è la scala: un file troppo grande per lo strumento a disposizione. Un convertitore nel browser si blocca da qualche parte nelle decine di megabyte, un'importazione nell'editor si ferma, e persino pandas rallenta. La soluzione non è un convertitore migliore ma una forma diversa: dividi il file, elaboralo in streaming con jq --stream, oppure salta del tutto il CSV e tieni i dati come JSON Lines (un oggetto JSON per riga), che si elabora in streaming in modo naturale e resta interrogabile. La nostra guida su come convertire JSON di grandi dimensioni in CSV online tratta la questione delle dimensioni per intero.

Quale modo dovresti scegliere?

Scegli in base alla tua situazione, non alla reputazione dello strumento. Un file, una volta sola, e vuoi aver finito: Modo 1, il convertitore online. Il risultato deve finire in un foglio di calcolo su cui continuerai a lavorare: Modo 2, Power Query. Scrivi già codice e il file è scomodo oppure la conversione si ripeterà: Modo 3, Python o jq. Stai già modificando il file in VS Code: Modo 4, il terminale integrato. La conversione deve avvenire dentro software che distribuisci: Modo 5, una chiamata a libreria.

Due spareggi risolvono la maggior parte dei casi rimanenti. Se la privacy conta — il file contiene dati di clienti, credenziali, qualsiasi cosa che non invieresti via email — preferisci un modo che tenga i dati sulla tua macchina: un convertitore nel browser, uno script locale, oppure il tuo editor. Se il file è enorme, preferisci un modo che elabori in streaming: jq --stream oppure uno script Python a blocchi, non una scheda del browser. Tutto il resto è gusto e abitudine, e ognuno dei cinque modi produce lo stesso CSV corretto per un file ben formato.

Cosa deve decidere ogni modo

Qualunque modo tu scelga, quattro decisioni si nascondono al suo interno, e due file convertiti con risposte diverse a queste decisioni non sono lo stesso CSV. Appiattimento: gli oggetti annidati diventano colonne con punti, oppure restano come testo JSON in una cella? Delimitatore: virgola, punto e virgola, tabulazione o pipe — e il tuo foglio di calcolo si aspetta lo stesso? Riga di intestazione: i nomi di colonna sono inclusi, e sono i nomi che si aspetta il tuo strumento a valle? Codifica: UTF-8 semplice, e il tuo foglio di calcolo lo apre come UTF-8 oppure come qualcos'altro?

Non sono argomenti avanzati; sono le decisioni che determinano se il CSV si apre correttamente al primo tentativo oppure al quinto. La nostra guida su come ricavare un CSV da JSON passa in rassegna tutte e sette le decisioni che trasformano dati grezzi in un file funzionante, con ciascuna testata contro il convertitore reale. Leggila una volta, e ogni conversione successiva sarà più veloce.

Guide correlate

Domande frequenti

Esiste un modo gratuito per convertire JSON in CSV?

Sì: tutti e cinque i modi in questa guida sono gratuiti. Un convertitore online è gratuito senza registrazione, Excel Power Query è incluso in Excel, Python e jq sono gratuiti e open source, VS Code è gratuito, e l'approccio JavaScript usa solo la libreria standard. Non devi mai pagare per convertire JSON in CSV.

Esiste un modo per convertire JSON in CSV senza installare nulla?

Sì. Usa un convertitore online gratuito: incolla il JSON oppure carica il file nel tuo browser e scarica il CSV. Il convertitore di questo sito gira interamente nel tuo browser, quindi non viene installato nulla e il file non lascia mai la tua macchina. Se il file è già aperto in un foglio di calcolo che possiedi, anche Power Query non richiede installazioni.

Esiste un modo per convertire JSON in CSV senza scrivere codice?

Sì, due. Un convertitore online non richiede alcun codice: incolla, converti, scarica. Anche Excel Power Query non richiede codice: importa il file JSON, espandi le colonne annidate facendo clic, e carica il risultato come tabella. Il codice diventa utile solo quando la conversione deve ripetersi oppure il file è scomodo.

Esiste un modo per convertire JSON in CSV in Excel?

Sì, con Power Query: Dati, Recupera dati, Da file, Da JSON. Espandi ogni colonna annidata per appiattire gli oggetti in colonne con punti, espandi oppure estrai le colonne di lista a seconda che tu voglia una riga per elemento oppure una sola cella unita, poi Chiudi e carica. Fogli Google non ha un'importazione nativa equivalente: passa da un convertitore online oppure usa un piccolo Apps Script.

Esiste un modo per convertire un file JSON grande in CSV?

Sì, ma non in una scheda del browser. Per file da decine di megabyte in su, usa la modalità streaming di jq (jq --stream), che elabora il file record per record invece di caricarlo tutto, oppure uno script Python a blocchi che legge e scrive in batch. Se il file è di centinaia di megabyte, valuta di tenerlo come JSON Lines (un oggetto JSON per riga) invece del CSV.

Esiste un modo per convertire JSON in CSV mantenendo intatti i dati annidati?

Sì: converti con l'appiattimento disattivato. Gli oggetti annidati e le liste restano allora come testo JSON dentro singole celle, così non si perde nulla, ma il risultato non è una tabella ordinabile. Se ti servono entrambe le cose — colonne reali e nulla perso — appiattisci le parti che analizzi e tieni il resto come testo JSON, oppure esplodi la lista che ti serve in una riga per elemento.

Esiste un modo per convertire CSV di nuovo in JSON?

Sì, il viaggio di ritorno è altrettanto ben supportato. La nostra guida su come convertire CSV in JSON tratta tre metodi affidabili: un convertitore online, uno snippet Python con pandas, e l'onesto passaggio in due fasi tramite Excel o Fogli Google, dato che nessuno dei due esporta JSON in modo nativo. Le stesse quattro decisioni — appiattimento, delimitatore, intestazione, codifica — valgono anche al contrario.

Un file, un minuto, senza installazioni

Incolla JSON oppure carica un file: gli oggetti annidati si appiattiscono in colonne con notazione a punti, le liste si uniscono in celle pulite, e il download è semplice UTF-8. Gratuito, senza registrazione, gira interamente nel tuo browser.

Apri il convertitore da JSON a CSV
Tutte le guide