Json To Csv LogoJson To Csv

convert json to csv locally: convertire JSON in CSV sul tuo computer, senza caricare il file (Guida 2026)

Convertire JSON in CSV in locale significa che la conversione gira sul tuo computer e il file non deve mai lasciarlo. Può significare una pagina di conversione che gira interamente nella scheda del tuo browser, uno script Python, un one-liner jq o un piccolo script Node. Questa guida testa ogni metodo su file reali, spiega quando la conversione locale è la scelta giusta e quando non lo è, e mostra come controllare il risultato prima di fidarti di esso.

Aggiornato: 2026-10-2510 min di lettura

Cosa significa davvero convertire JSON in CSV in locale?

La parola in locale viene usata per tre cose diverse, e la differenza conta quando la privacy è il motivo per cui lo chiedi. Il primo significato è lato client: una pagina web che esegue la conversione dentro la scheda del tuo browser. Stai comunque guardando un sito web, ma la pagina non invia mai i tuoi dati da nessuna parte, perché il codice di conversione gira sulla tua macchina. Il secondo significato è software installato: un programma sul tuo computer, come un'applicazione desktop o un'estensione per l'editor, che legge un file e ne scrive un altro. Il terzo significato è uno script che esegui tu: poche righe di Python, jq o Node che controlli completamente e che puoi leggere prima di eseguire.

Tutti e tre tengono il file sulla tua macchina. Differiscono in cosa devi installare, cosa devi imparare e quanto il risultato è ripetibile. Una pagina lato client non richiede nulla da installare e nulla da imparare, ma ripeti i clic ogni volta. Uno script richiede uno strumento installato e poche righe digitate, ma puoi eseguirlo su cento file con un unico comando e ottenere lo stesso risultato ogni volta. Il resto di questa guida tratta tutti e tre come locali, e dice quale sia ciascuno per ogni metodo.

Una cosa che in locale non significa è privato per magia. Uno script scaricato da uno sconosciuto ed eseguito senza leggerlo può fare qualsiasi cosa sulla tua macchina, incluso inviare il tuo file da qualche parte. Gli script in questa guida sono abbastanza corti da leggere per intero, e dovresti leggere qualsiasi script prima di eseguirlo su dati sensibili. Locale è una proprietà del luogo in cui avviene il lavoro, e la verifichi leggendo il codice o osservando la rete, non fidandoti di un'etichetta.

Quando la conversione locale è la scelta giusta, e quando non lo è

La conversione locale è la scelta giusta in quattro situazioni. La prima è dati sensibili: elenchi di clienti, registri interni, qualsiasi cosa sotto un contratto o una regola di privacy che dice che i dati restano dentro l'azienda. Se il file non può lasciare la macchina, un convertitore lato server non è semplicemente un'opzione, per quanto comodo. La seconda è assenza di connessione: un aereo, un luogo remoto, una rete che blocca lo strumento che volevi. Gli strumenti locali funzionano esattamente allo stesso modo offline, perché non c'è nessun server da raggiungere.

La terza è la ripetibilità. Se converti lo stesso tipo di esportazione ogni settimana, uno script trasforma una sessione di clic di quindici minuti in un unico comando, e lo stesso comando dà le stesse colonne nello stesso ordine ogni volta. La quarta è dimensione e controllo: un file con milioni di righe, o un file le cui colonne devi rinominare e riordinare, è più facile da gestire con uno script che puoi regolare che con una pagina le cui opzioni sono fisse.

La conversione locale è la scelta sbagliata in tre situazioni. Se più persone hanno bisogno della stessa conversione e delle stesse impostazioni, una pagina condivisa batte cinque copie di uno script che divergono tra loro. Se non hai una macchina che controlli, per esempio un computer in prestito o un portatile di lavoro bloccato che non può installare Python o jq, una pagina lato client è comunque locale ed è comunque la scelta migliore. E se il file è più grande di quanto la tua macchina possa tenere comodamente in memoria, nessun metodo locale aiuta finché non dividi il file o lo elabori in streaming, che è un lavoro diverso. Fai una domanda prima di scegliere: questo file deve restare su questa macchina, e lo farò di nuovo? Se entrambe le risposte sono sì, vai in locale e automatizzalo con uno script. Se solo la prima è sì, una pagina lato client basta.

Metodo 1: il convertitore in questa pagina è già locale

Il metodo locale più semplice è già davanti a te. Il convertitore in questa pagina gira interamente dentro la scheda del tuo browser. Quando incolli JSON o carichi un file, la pagina analizza il JSON, lo appiattisce e costruisce il testo CSV nel tuo browser, poi ti consegna il risultato come file scaricato. Non c'è nessuna fase di caricamento e nessun server in attesa dei tuoi dati, perché il codice di conversione arriva con la pagina e gira sulla tua macchina.

Puoi verificare tu stesso questa affermazione in circa trenta secondi, e dovresti farlo, perché un'affermazione sulla privacy vale la pena di verificarla. Apri il convertitore, disconnettiti dalla rete o attiva la modalità aereo, poi incolla JSON e convertilo. Funziona comunque, perché nulla della conversione ha bisogno della rete. L'unico pulsante della pagina che tocca la rete è il pulsante opzionale di caricamento da URL, che carica JSON da un indirizzo web che digiti tu. Se incolli o carichi invece di recuperare da URL, la rete non viene mai usata.

Questo rende la pagina il metodo locale giusto per conversioni singole e per macchine su cui non puoi installare nulla. I limiti sono gli stessi di qualsiasi pagina: ripeti i clic per ogni file, e file molto grandi rallenteranno la scheda. Per un singolo file, o per un file che converti una sola volta, quei limiti non contano. Per un'esportazione settimanale, passa a uno script qui sotto e tieni la pagina come controllo rapido.

Metodo 2: Python, il cavallo di battaglia locale, senza pacchetti

Python è il metodo locale più utile per la maggior parte delle persone, perché è già installato sulla maggior parte delle macchine degli sviluppatori e la sola libreria standard basta. Niente pandas, niente pacchetti, niente da scaricare. Lo script qui sotto legge un file JSON di oggetti, prende i nomi delle colonne dal primo oggetto e scrive un CSV con il modulo csv standard, che gestisce le virgolette correttamente da solo. Salvalo come json2csv.py ed eseguilo con python3 json2csv.py orders.json orders.csv.

Python, standard library only
import json, csv, sys

with open(sys.argv[1]) as f:
    rows = json.load(f)

with open(sys.argv[2], 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=rows[0].keys())
    writer.writeheader()
    writer.writerows(rows)

Testato sul file di esempio usato in tutta questa guida, tre ordini con campi id, customer e tags, questo script ha prodotto una riga di intestazione più tre righe di dati. L'oggetto customer annidato è uscito come stringa repr di Python, non come testo JSON, e la lista tags è uscita come lista repr, perché un semplice DictWriter non appiattisce i valori annidati. Questo è il limite onesto della versione corta: i dati piatti si convertono perfettamente, i dati annidati hanno bisogno di un passaggio in più. Il passaggio di appiattimento è piccolo. Una breve funzione ricorsiva che trasforma gli oggetti annidati in chiavi in notazione puntata, customer.name e customer.city, prima della scrittura, ti dà le stesse colonne che la pagina del convertitore produce con l'interruttore di appiattimento attivo.

Il modulo csv sta facendo un lavoro reale per te qui. Racchiude tra virgolette le celle che contengono il delimitatore, raddoppia le virgolette interne e scrive i fine riga che il tuo foglio di calcolo si aspetta. Non costruire CSV unendo i valori con virgole da solo. L'unione fatta a mano si rompe alla prima virgola dentro un valore, e quella rottura è silenziosa: il file sembra a posto finché una colonna non si sposta. Anche la versione con libreria standard gira allo stesso modo su ogni macchina con Python 3, ed è per questo che è il metodo da scegliere quando un collega deve eseguire anche la tua conversione.

Metodo 3: jq, il one-liner per chi vive nel terminale

Se usi già il terminale, jq trasforma l'intero lavoro in una riga, per dati piatti. Legge JSON, prende le chiavi dal primo oggetto come intestazione, poi emette ogni riga come riga CSV, con le virgolette gestite dal suo formattatore @csv. Nessun file di script, nessun ciclo, nessuna virgoletta manuale. Il comando qui sotto legge un file di ordini piatto, id, city e total per ordine, e scrive orders.csv. Nota il limite, dichiarato chiaramente: il formattatore @csv rifiuta oggetti annidati ed elenchi, quindi questo one-liner è solo per esportazioni piatte, e l'esempio annidato della sezione Python fallisce su di esso con un errore invece di una tabella sbagliata, che è il tipo sicuro di fallimento.

jq one-liner, flat objects
jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' orders-flat.json > orders.csv

Testato su un file piatto di tre ordini, l'output è stata una riga di intestazione tra virgolette, "id","city","total", seguita da tre righe di dati con celle di testo tra virgolette e numeri senza virgolette, esattamente la forma che produce @csv. Il dettaglio keys_unsorted conta: il semplice keys ordinerebbe le colonne in ordine alfabetico, il che cambia l'ordine delle colonne rispetto al tuo file. Se i tuoi dati hanno oggetti annidati, jq ha bisogno prima di un filtro di appiattimento, e il one-liner cresce fino a diventare un piccolo script. Per esportazioni piatte, che è ciò che la maggior parte delle risposte di elenco delle API sono già una volta tolto l'involucro, il one-liner è l'intero lavoro, e gira offline su qualsiasi macchina con jq installato. Il limite dei dati annidati è stato confermato sulla macchina di test: lo stesso filtro sull'esempio annidato fallisce con un errore invece di una tabella sbagliata, che è il tipo sicuro di fallimento.

Un'avvertenza: jq legge l'intero file in memoria, quindi un'esportazione di più gigabyte lo metterà sotto sforzo proprio come mette sotto sforzo una scheda del browser. Per esportazioni ordinarie, fino a decine di megabyte, è istantaneo. Per file molto grandi, dividi prima il file o usa uno strumento in streaming, e tratta questo come un problema separato dalla conversione.

Metodo 4: Node, per quando la conversione vive dentro un progetto

Node è il metodo locale giusto quando la conversione fa parte di un progetto piuttosto che di un compito singolo: una fase di build, una pipeline di dati, uno script che il team esegue già. Node include l'analisi JSON integrata, quindi l'unico lavoro è trasformare le righe in testo CSV, e il piccolo script qui sotto lo fa con una funzione di appiattimento puntato così gli oggetti annidati diventano colonne in notazione puntata, in linea con il comportamento della pagina del convertitore. Salvalo come json2csv.mjs ed eseguilo con node json2csv.mjs orders.json orders.csv.

Node script with dot-flattening
import { readFileSync, writeFileSync } from 'node:fs';

const flatten = (obj, prefix = '', out = {}) => {
  for (const [k, v] of Object.entries(obj)) {
    const key = prefix ? prefix + '.' + k : k;
    if (v && typeof v === 'object' && !Array.isArray(v)) flatten(v, key, out);
    else out[key] = Array.isArray(v) ? v.join('; ') : v;
  }
  return out;
};

const rows = JSON.parse(readFileSync(process.argv[2], 'utf8')).map(r => flatten(r));
const cols = [...new Set(rows.flatMap(r => Object.keys(r)))];
const esc = v => v == null ? '' : /[",\n]/.test(String(v)) ? '"' + String(v).replaceAll('"', '""') + '"' : String(v);
const lines = [cols.join(','), ...rows.map(r => cols.map(c => esc(r[c])).join(','))];
writeFileSync(process.argv[3], lines.join('\n'));

Testato sullo stesso esempio, lo script ha prodotto l'intestazione id,customer.name,customer.city,total e tre righe, con l'oggetto customer annidato appiattito in due colonne e la lista tags unita con punto e virgola e spazio. La funzione di escaping segue la stessa regola usata dalla pagina del convertitore: racchiudi una cella tra virgolette solo quando contiene il delimitatore, una virgoletta o un ritorno a capo, e raddoppia le virgolette interne. Quella regola è tutta la gestione delle virgolette in CSV, e applicarla correttamente è la differenza tra un file che si apre in modo pulito e un file che sposta le colonne in silenzio.

Lo script è volutamente corto così puoi leggerlo prima di eseguirlo. Prende l'unione di tutte le colonne tra le righe, così una riga a cui manca un campo ottiene una cella vuota, il che corrisponde alla pagina del convertitore. Se hai bisogno di streaming per file enormi, o di rinominare le colonne, quelle sono aggiunte a questo script, non sostituzioni di esso.

Metodo 5: strumenti che hai già, VS Code ed Excel offline

Altri due metodi locali non richiedono una nuova installazione se usi già gli strumenti. In VS Code, un'estensione converte il file JSON aperto in CSV dalla palette dei comandi, ed è il percorso locale più veloce quando stai già modificando il file. La guida completa, inclusa quale estensione e i comandi esatti, è nella guida VS Code collegata qui sotto. In Excel, Power Query legge un file JSON dal tuo disco e lo trasforma in una tabella senza che il file lasci mai la macchina: Dati, Ottieni dati, Da file, Da JSON, poi espandi le colonne e carica. Entrambi sono completamente offline una volta installato lo strumento.

Questi metodi scambiano controllo con comodità. VS Code ed Excel decidono la gestione delle colonne per te, e le loro impostazioni predefinite di solito vanno bene per dati piatti e a volte sorprendono per dati annidati. Se l'output sembra sbagliato, la diagnosi è la stessa che altrove: controlla se i valori annidati sono stati appiattiti o lasciati come testo JSON, e controlla il delimitatore all'apertura. Per un file che converti una volta, entrambi i metodi battono installare qualcosa di nuovo. Per un file che converti settimanalmente, uno script che possiedi batte entrambi.

Quando la conversione locale non basta, e cosa fare allora

La conversione locale ha tre limiti reali, e nominarli ti evita di forzare un metodo locale dove non si adatta. Il primo è la collaborazione: se cinque persone hanno bisogno della stessa conversione con le stesse impostazioni, cinque script divergono e una pagina condivisa resta coerente. Il secondo è l'accesso alla macchina: su un computer in prestito o bloccato potresti non poter installare Python, jq o Node, e allora la pagina lato client è comunque il tuo metodo locale. Il terzo è la scala: un file più grande della memoria metterà sotto sforzo ogni metodo qui, e la soluzione è dividere il file o elaborarlo in streaming riga per riga, non un convertitore diverso.

C'è anche un limite che la gente dimentica: la conversione locale non corregge dati cattivi. Uno script converte esattamente ciò che il file contiene, inclusi campi mancanti, tipi misti e forme incoerenti. Se la stessa esportazione a volte ha un campo e a volte no, ogni metodo in questa guida ti dà l'unione delle colonne con celle vuote, il che è onesto ma potrebbe non essere ciò che il tuo foglio di calcolo si aspetta. Correggi l'esportazione di origine quando puoi, e documenta le celle vuote quando non puoi.

Igiene dei file locali: quattro controlli prima di fidarti del CSV

Una conversione locale è finita solo quando l'output supera i controlli, e i controlli richiedono meno di un minuto. Primo, conserva il JSON originale. Non convertire mai sul posto sovrascrivendo la sorgente, perché una conversione perde informazioni: i tipi diventano testo, la struttura annidata diventa nomi di colonna, e non c'è modo di tornare all'albero originale dal solo CSV. Secondo, dai all'output un nome che si ordini bene: orders-2026-10-25.csv batte output-final-v2.csv, e la data ti dice da quale esportazione proviene.

Terzo, conta le righe. Il CSV dovrebbe avere una riga di intestazione più una riga per oggetto nel JSON, e un conteggio rapido intercetta il fallimento più comune, cioè un cercatore di righe che sceglie la lista sbagliata da una risposta con involucro. Quarto, apri il CSV con il delimitatore giusto. Un file che si apre come un'unica colonna quasi mai è dati rotti; è una mancata corrispondenza di delimitatore tra il file e il foglio di calcolo, e reimportarlo con il delimitatore corrispondente lo risolve. La pagina del convertitore, il modulo csv di Python, jq e lo script Node qui sopra racchiudono tutti tra virgolette in base al delimitatore attivo, quindi un'apertura a colonna singola è un problema di apertura, non un problema di conversione.

Risoluzione dei problemi delle conversioni locali

Gli stessi quattro problemi si presentano in ogni metodo locale, e ciascuno ha una soluzione. File non trovato significa che il terminale si trova in una cartella diversa da quella del file; controlla il percorso prima di qualsiasi altra cosa. JSON non valido significa che il file di origine è rotto vicino alla posizione segnalata, di solito una virgoletta mancante o una virgola finale di troppo; convalidalo e correggi la sorgente, perché nessun convertitore dovrebbe indovinare su input rotto. Un'apertura a colonna singola significa una mancata corrispondenza di delimitatore dal lato dell'apertura; reimporta e scegli il delimitatore con cui il file è stato scritto.

Dati annidati che appaiono come testo JSON illeggibile nelle celle significano che l'appiattimento è stato saltato: lo script Python corto e il one-liner jq non appiattiscono, quindi usa le varianti con appiattimento qui sopra o la pagina del convertitore con l'interruttore di appiattimento attivo. Colonne in un ordine diverso da quello del file significano che uno strumento ha ordinato le chiavi; jq ha bisogno di keys_unsorted, e lo script Node conserva l'ordine di prima apparizione. Righe mancanti del tutto significano che il cercatore di righe ha scelto una lista diversa da quella che intendevi, il che accade con risposte API con involucro; indirizza lo strumento verso la lista stessa, oppure togli prima l'involucro dalla risposta.

Guide correlate

Domande frequenti

Cosa significa convertire JSON in CSV in locale?

Significa che la conversione gira sul tuo computer invece che su un server. Può essere una pagina di conversione lato client che gira nella scheda del tuo browser, software installato come VS Code o Excel, o uno script che esegui tu in Python, jq o Node. In tutti e tre i casi il file non deve mai lasciare il tuo computer.

Il convertitore in questa pagina è locale?

Sì. Incolla o carica JSON e la conversione gira dentro la scheda del tuo browser, con il risultato restituito come file scaricato. Puoi verificarlo disconnettendoti dalla rete e convertendo comunque: funziona lo stesso. L'unico pulsante che usa la rete è il pulsante opzionale di caricamento da URL, che carica JSON da un indirizzo che digiti tu.

Devo installare qualcosa per convertire JSON in CSV in locale?

No, se usi la pagina del convertitore, che non richiede nulla da installare. Se vuoi uno script ripetibile, Python 3 è già installato sulla maggior parte delle macchine degli sviluppatori e la sua sola libreria standard basta. jq e Node sono un'installazione ciascuno ed entrambi girano completamente offline una volta installati.

Quale metodo locale è migliore per dati sensibili?

Va bene qualsiasi metodo in cui puoi vedere il codice, ma un breve script che leggi tu è l'opzione più forte, perché non c'è nulla di nascosto di cui fidarsi. Leggi lo script prima di eseguirlo su dati sensibili, conserva il JSON originale, e preferisci una pagina lato client o uno script a qualsiasi strumento che carichi il file.

Posso convertire JSON in CSV in locale senza internet?

Sì. La pagina del convertitore funziona offline una volta caricata, e Python, jq, Node, VS Code ed Excel girano tutti completamente offline. L'unico passaggio che ha bisogno di una connessione è recuperare JSON da un URL, che è opzionale e separato dalla conversione stessa.

Perché il mio CSV locale si apre come un'unica colonna?

È una mancata corrispondenza di delimitatore dal lato dell'apertura, non dati rotti. Il tuo foglio di calcolo ha diviso il file su un delimitatore diverso da quello con cui è stato scritto. Reimporta il file e scegli il delimitatore corrispondente, oppure rigenera il CSV con punto e virgola o tab, e le colonne appariranno.

Convertire in locale perde informazioni?

Sì, le stesse informazioni che perde qualsiasi conversione. I valori sono conservati ma i tipi diventano testo, gli oggetti annidati diventano colonne in notazione puntata, e le liste diventano celle unite o testo JSON. Non c'è modo di tornare all'albero originale dal solo CSV, quindi conserva sempre il file JSON originale.

Prova il metodo locale subito

Incolla qualsiasi JSON nel convertitore in questa pagina e guardalo convertire dentro la scheda del tuo browser, senza caricamenti, senza registrazione, nulla lascia la tua macchina. Oppure copia lo script Python ed eseguilo sui tuoi file.

Apri il convertitore JSON in CSV
Tutte le guide