Json To Csv LogoJson To Csv

Come convertire JSON in CSV in VS Code? 4 modi, dal clic a un tasto (Guida 2026)

VS Code non ha un comando integrato da JSON a CSV, ma ti offre quattro percorsi onesti: un'estensione in un clic, il terminale integrato con jq o Python, un'attività tasks.json salvata, oppure un convertitore online quando vuoi zero configurazione. Eccoli tutti, testati su dati reali annidati.

Aggiornato: 2026-10-1510 min di lettura

Prima, il quadro onesto: VS Code è un editor, non un convertitore

Se hai cercato nei menu, non ti sei perso niente. VS Code non ha un comando Converti in CSV, non ha un menu Esporta per JSON e non ha un modo integrato per trasformare un file .json in un file .csv. Non è una dimenticanza: VS Code è un editor di codice, e la conversione di formato è il tipo di lavoro che delega a estensioni, terminale e attività. Una volta accettato questo, la domanda smette di essere «dov'è il pulsante?» e diventa «quale dei quattro percorsi si adatta a questo file?»

I quattro percorsi, in breve: un'estensione per la conversione in un clic dentro l'editor; il terminale integrato per il pieno controllo con jq o Python; un'attività tasks.json per le conversioni che ripeti ogni settimana; e un convertitore online per i file una tantum in cui vuoi zero configurazione. Ognuno è davvero il migliore in una cosa, e ognuno ha una modalità di fallimento che gli altri evitano. Questa guida li copre tutti e quattro, con i comandi esatti e gli output esatti che hanno prodotto su un vero file di test annidato: un documento JSON di tre ordini con oggetti cliente annidati, elenchi di articoli e un totale nullo.

Percorso 1: l'estensione JSON2CSV (il più veloce per un singolo file)

Per un singolo file che vuoi convertire subito, un'estensione è il percorso che richiede meno sforzo. Quella da installare è JSON2CSV di khaeransori, sul Visual Studio Code Marketplace. Il suo README descrive il flusso di lavoro in modo chiaro: installala, apri un file JSON, apri la Tavolozza dei comandi con Ctrl+Shift+P (Cmd+Shift+P su macOS), digita Convert JSON to CSV, e il CSV convertito si apre in una nuova scheda dell'editor, dove lo salvi con Ctrl+S. Converte anche nella direzione opposta, da CSV a JSON, dalla stessa tavolozza.

L'installazione richiede meno di un minuto: apri la vista Estensioni con Ctrl+Shift+X, cerca json2csv e fai clic su Installa sulla voce pubblicata da khaeransori. Due abitudini rendono sicure le installazioni di estensioni in generale, e valgono qui come ovunque: verifica che il nome dell'editore corrisponda prima di fare clic su Installa (esistono estensioni imitatrici con nomi simili per strumenti popolari) e dai un'occhiata al numero di download e alla data dell'ultimo aggiornamento. Un'estensione esegue codice sulla tua macchina con accesso ai tuoi file, quindi un momento di verifica dell'editore vale più di qualsiasi elenco di funzionalità.

Esistono due alternative se JSON2CSV non fa per te. DataMorph (indicata come Data Format Converter) converte tra CSV, JSON ed Excel dal menu contestuale del clic destro o dalla Tavolozza dei comandi, e pubblicizza la conversione in batch di più file in una volta oltre all'appiattimento intelligente del JSON annidato. Algae Data è un'opzione più leggera: apri un file JSON, esegui Algae: JSON to CSV dalla Tavolozza dei comandi, e il risultato si apre in una nuova finestra dell'editor. Tutte e tre sono vere estensioni del Marketplace con inserzioni pubbliche; scegli quella la cui lista di funzionalità corrisponde ai tuoi file, non quella con la descrizione più roboante.

Il limite onesto del percorso con estensione: stai affidando i tuoi dati a uno strumento di terze parti, e le sue scelte di appiattimento sono sue. Se il tuo JSON è profondamente annidato o l'ordine delle colonne conta, i percorsi da terminale qui sotto ti danno il controllo esplicito su entrambi, ed è per questo che gli sviluppatori che convertono JSON ogni settimana finiscono di solito sul Percorso 2 o 3.

Percorso 2: il terminale integrato: jq per i dati piatti, Python per i dati annidati

Il terminale integrato è il superpotere di VS Code per questo lavoro: premi Ctrl+` (il tasto backtick) e hai una shell completa dentro l'editor, nella cartella del tuo progetto, con il file aperto accanto. Niente cambi di finestra, niente caricamenti, e ogni comando qui sotto è rieseguibile. Due strumenti coprono quasi ogni file: jq per le conversioni rapide di dati piatti, e Python per tutto ciò che è annidato.

Inizia con jq, il processore JSON da riga di comando. Se il tuo JSON è un array di oggetti piatti, senza oggetti annidati e senza array dentro le righe, un solo comando fa l'intera conversione. Raccoglie ogni chiave di tutte le righe come intestazione, poi emette ogni riga come CSV:

jq: da array JSON piatto a CSV (verificato)
jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' flat.json > flat.csv

Su un file di test piatto di due ordini (id, name, total), quel comando ha prodotto esattamente questo: una riga di intestazione id,name,total seguita da 1,"Ana",24.5 e 2,"Bo",9.0. Pulito, corretto e immediato. Ma prova lo stesso comando su dati annidati e jq ti ferma onestamente: sul nostro file di test annidato di tre ordini ha dato l'errore «object is not valid in a csv row», perché un oggetto annidato come customer non ha una singola cella CSV in cui vivere. Quell'errore è jq che ti dice la verità: gli strumenti piatti hanno bisogno di righe piatte.

Percorso 2: il terminale integrato: jq per i dati piatti, Python per i dati annidati (continua)

Per il JSON annidato, jq funziona comunque se nomini le colonne in modo esplicito. Questa ricetta estrae i campi che vuoi per percorso, unisce l'elenco items in un'unica cella con "; " e scrive il CSV:

jq: JSON annidato con colonne esplicite (verificato)
jq -r '["id","name","city","items","total"], (.[] | [.id, .customer.name, .customer.city, (.items | join("; ")), .total]) | @csv' orders.json > orders.csv

Eseguita contro il file di test annidato, ha prodotto un'intestazione "id","name","city","items","total" e tre righe, tra cui 1,"Ana","Oslo","book; pen",24.5 e 3,"Cy","Trondheim","", per l'ordine con elenco items vuoto e totale nullo. Nota due comportamenti di jq che vale la pena conoscere: @csv mette tra virgolette ogni stringa (corretto, anche se rumoroso), e null diventa un campo vuoto solo quando finisce in un contesto di stringa: la cella items vuota della terza riga è venuta da join su un elenco vuoto, mentre il totale nullo è stato stampato come campo vuoto alla fine della riga. Colonne esplicite significano controllo esplicito: decidi tu l'ordine delle colonne, i percorsi di annidamento e cosa diventa ogni elenco.

Percorso 2: il terminale integrato: jq per i dati piatti, Python per i dati annidati (continua)

Quando nominare ogni colonna a mano diventa noioso, Python è lo strumento migliore. Salva questo piccolo script come convert.py nel tuo progetto: appiattisce gli oggetti annidati in colonne con notazione puntata (customer.name), unisce gli elenchi semplici con "; ", trasforma null in una cella vuota e scrive un CSV corretto con il modulo csv standard che gestisce la quotatura al posto tuo:

convert.py: script di conversione da JSON a CSV con appiattimento (verificato)
import json, csv, sys

def flatten(obj, prefix=""):
    out = {}
    if isinstance(obj, dict):
        for k, v in obj.items():
            key = f"{prefix}.{k}" if prefix else k
            out.update(flatten(v, key))
    elif isinstance(obj, list):
        out[prefix] = "; ".join(str(x) for x in obj if not isinstance(x, (dict, list))) if obj else ""
        for i, v in enumerate(obj):
            if isinstance(v, (dict, list)):
                out.update(flatten(v, f"{prefix}[{i}]"))
    else:
        out[prefix] = "" if obj is None else obj
    return out

rows = json.load(open(sys.argv[1]))
if isinstance(rows, dict):
    rows = [rows]
flat = [flatten(r) for r in rows]
cols = sorted({k for r in flat for k in r})
with open(sys.argv[2], "w", newline="", encoding="utf-8") as f:
    w = csv.DictWriter(f, fieldnames=cols)
    w.writeheader()
    w.writerows(flat)
print(f"wrote {sys.argv[2]}: {len(flat)} rows, {len(cols)} columns")

Eseguilo dal terminale integrato con python3 convert.py orders.json orders.csv. Sullo stesso file di test annidato ha stampato «wrote orders.csv: 3 rows, 5 columns» e ha prodotto customer.city,customer.name,id,items,total come intestazione, con le righe Oslo,Ana,1,book; pen,24.5 / Bergen,Bo,2,mug,9.0 / Trondheim,Cy,3,, : il totale nullo e l'elenco items vuoto sono finiti entrambi come celle vuote, esattamente come promettono le regole di appiattimento. Lo script gestisce le due forme che si incontrano davvero: un array di primo livello (il caso normale) e un singolo oggetto di primo livello (avvolto in una tabella di una riga). Entrambe le ricette jq e questo script sono stati eseguiti sulla macchina di build prima della pubblicazione, e gli output qui sopra sono i loro output reali, non illustrazioni.

Percorso 3: salvalo come attività: un tasto, ogni volta

Se converti file JSON più di una volta al mese, smetti di ridigitare i comandi e salva la conversione come attività di VS Code. Un'attività è un comando con nome in .vscode/tasks.json, eseguibile da Terminale > Esegui attività o con la scorciatoia da tastiera Ctrl+Shift+B. Trasforma il percorso Python qui sopra in un'operazione con un tasto sul file che hai aperto.

Crea .vscode/tasks.json nel tuo progetto con questo contenuto (il file è stato verificato come JSON valido prima della pubblicazione):

.vscode/tasks.json: converte il file aperto (verificato che il parsing riesce)
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "JSON to CSV: convert current file",
      "type": "shell",
      "command": "python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv",
      "problemMatcher": []
    }
  ]
}

Come funziona: ${file} è il file aperto nel tuo editor attivo, ${fileDirname} è la sua cartella, e ${fileBasenameNoExtension} è il suo nome senza .json: quindi con orders.json aperto, l'attività esegue python3 convert.py su di esso e scrive orders.csv accanto a esso. Apri un qualsiasi file JSON, premi Ctrl+Shift+B, scegli l'attività, e il CSV appare accanto al file sorgente. Lo stesso schema funziona per le ricette jq: sostituisci il comando con la riga jq e ${file} come input. Un'avvertenza: le attività eseguono comandi shell con i permessi del tuo utente, quindi aggiungi solo attività da fonti di cui ti fidi: la stessa regola delle estensioni, applicata alla configurazione.

Il percorso con attività è anche dove lo script Python ripaga rispetto a jq: un solo script più un'attività gestiscono file piatti, file annidati, oggetti singoli e array allo stesso modo, senza modificare il comando per ogni file. Se converti esportazioni dalla stessa API ogni settimana, questo è il percorso che ripaga.

Percorso 4: quando saltare del tutto VS Code e usare un convertitore online

Ci sono tre situazioni in cui uscire dall'editor è la scelta giusta. Primo, un file una tantum su una macchina dove non puoi installare estensioni o non hai jq o Python a portata di mano: un portatile in prestito, una macchina di lavoro bloccata, un Chromebook. Secondo, JSON il cui annidamento è abbastanza scomodo da far sembrare un lavoro scrivere percorsi jq espliciti: un convertitore online con interruttore di appiattimento trasforma l'intero albero in colonne in un clic, e puoi vedere l'anteprima prima di scaricare. Terzo, la condivisione: se il CSV è per un collega che non usa VS Code, convertire nel browser e inviargli il file finito è più semplice che spiegargli la tua catena di strumenti.

Il percorso online su questo sito gira interamente nel tuo browser: incolla il JSON o carica il file, la conversione avviene lato client senza alcun caricamento su un server, i dati annidati si appiattiscono in colonne con notazione puntata, e il download è semplice UTF-8. Per un utente di VS Code il confronto onesto è: il convertitore online scambia la ripetibilità di un'attività con zero configurazione e un'anteprima immediata. Usa i percorsi dell'editor quando la conversione si ripete; usa il percorso del browser quando non si ripete.

Ispezionare il risultato dentro VS Code (e perché il testo grezzo è la verità)

Qualunque percorso tu scelga, ispeziona il CSV in VS Code prima di fidarti. VS Code ti mostra il file grezzo: le virgole, le virgolette e le interruzioni di riga reali, mentre un foglio di calcolo ti mostra la sua interpretazione di esse. Se i due non concordano, il testo grezzo è la verità e il foglio di calcolo sta indovinando. Due estensioni rendono l'ispezione più facile: Edit CSV apre un CSV come tabella modificabile in stile foglio di calcolo dentro l'editor, e Rainbow CSV colora ogni colonna con un colore diverso così le righe disallineate saltano subito all'occhio.

La segnalazione «il mio CSV è rotto» più comune è un file che si apre in Excel come un'unica lunga colonna. Nove volte su dieci il file è a posto: Excel ha indovinato il delimitatore sbagliato (spesso un file con punto e virgola aperto come virgola) o la codifica sbagliata. Apri prima il file in VS Code: se le virgole e le virgolette sembrano giuste nel testo grezzo, il file è giusto, e la correzione va fatta lato importazione (Excel: Dati > Da testo/CSV, scegli il delimitatore e UTF-8 65001). La barra di stato in fondo a VS Code mostra anche la codifica del file; se un file sembra rovinato, usa File > Salva con codifica > UTF-8 per normalizzarlo, e Salva con codifica > UTF-8 con BOM solo se uno specifico strumento Windows richiede un BOM.

Risoluzione dei problemi: i quattro errori che gli utenti di VS Code incontrano davvero

JSON non valido, segnalato prima di convertire. Se il file ha sottolineature rosse o il pannello Problemi elenca errori, correggili prima: nessun convertitore accetta JSON malformato. Due trappole specifiche di VS Code: i file in stile impostazioni consentono commenti e virgole finali (quello è JSONC, non JSON), e una virgola finale vagante dopo l'ultimo elemento è l'errore di sintassi più comune in assoluto. Rimuovi commenti e virgole finali prima di convertire; il servizio di linguaggio JSON di VS Code di solito indica la riga esatta.

Un singolo oggetto invece di un array. Le API spesso restituiscono {"data": [...], "total": 2} o un singolo {...} invece di un array nudo. Lo script Python qui sopra gestisce un oggetto singolo avvolgendolo in una riga, e per un oggetto contenitore vuoi le righe dentro di esso: estrai prima l'array (in jq, .data | ...; in Python, rows = json.load(...)["data"]), altrimenti il convertitore ti darà una riga con l'intero array trasformato in stringa in una cella.

Dati annidati che «scompaiono». L'appiattimento fa sempre delle scelte: gli elenchi di oggetti non hanno una rappresentazione a cella singola, e lo script Python qui sopra unisce solo gli elenchi di valori semplici, ricorrendo negli elenchi di oggetti con chiavi indicizzate (items[0].name). Se i tuoi elenchi contengono oggetti e l'output sembra sbagliato, è la regola di appiattimento che si mostra, non una perdita di dati: decidi per colonna se vuoi l'elenco unito, espanso in righe o eliminato, e dillo nello script invece di accettare un valore predefinito in silenzio.

File enormi. Un'estensione che converte un file JSON da 200 MB dentro l'editor può bloccare l'interfaccia; i percorsi da terminale trasmettono meglio in streaming, e jq in particolare gestisce file grandi senza caricare un'anteprima. Se VS Code sembra lento, è il segnale di usare il terminale: jq o Python dalla riga di comando, con l'editor che mostra solo il risultato.

Quale percorso dovresti scegliere?

Un file, subito, senza configurazione: l'estensione JSON2CSV: installa, Tavolozza dei comandi, salva la nuova scheda. File che converti ogni settimana: lo script Python più un'attività tasks.json: un tasto, stesso risultato ogni volta. Un file piatto veloce e ti piace il terminale: la riga jq in un comando. Un file una tantum su una macchina bloccata, o un annidamento scomodo che vuoi vedere in anteprima prima di impegnarti: il convertitore online. Nessuno di questi è «il» modo di VS Code, perché VS Code deliberatamente non ha un unico modo integrato: l'editor ti dà i pezzi, e la combinazione giusta è quella che corrisponde alla frequenza con cui converti e a quanto sono annidati i tuoi dati.

Apri il convertitore gratuito da JSON a CSV

Guide correlate

Domande frequenti

Come converto JSON in CSV in VS Code?

VS Code non ha un convertitore integrato, quindi aggiungi uno dei quattro percorsi: installa l'estensione JSON2CSV ed esegui Convert JSON to CSV dalla Tavolozza dei comandi; usa il terminale integrato con jq (dati piatti) o uno script Python (dati annidati); salva la conversione come attività tasks.json per ripetizioni con un tasto; oppure incolla il JSON in un convertitore online gratuito per un file una tantum con zero configurazione.

Qual è la migliore estensione di VS Code per convertire JSON in CSV?

JSON2CSV di khaeransori è la più diretta: installala dalla vista Estensioni, apri il tuo file JSON, esegui Convert JSON to CSV dalla Tavolozza dei comandi, e il CSV si apre in una nuova scheda. DataMorph (Data Format Converter) aggiunge la conversione Excel e l'elaborazione in batch; Algae Data è un'alternativa più leggera. Verifica sempre il nome dell'editore prima di installare qualsiasi estensione.

Posso convertire JSON in CSV in VS Code senza estensioni?

Sì: usa il terminale integrato (Ctrl+`). Per array JSON piatti: jq -r '(map(keys) | add | unique) as $cols | $cols, (.[] | [.[$cols[]]] | @csv)' file.json > file.csv. Per JSON annidato, usa jq con percorsi di colonna espliciti o un piccolo script Python che appiattisce gli oggetti annidati in colonne con notazione puntata. Entrambi i percorsi sono stati testati su dati reali per questa guida.

Perché jq fallisce con «object is not valid in a csv row»?

Perché una riga contiene un oggetto o un array annidato, e le righe CSV possono contenere solo valori piatti. La ricetta generica jq @csv funziona solo su righe piatte. Risolvila nominando le colonne in modo esplicito (jq -r '["id","name",...], (.[] | [.id, .customer.name, ...]) | @csv') oppure appiattendo prima con uno script Python che trasforma gli oggetti annidati in colonne con notazione puntata.

Come automatizzo la conversione da JSON a CSV in VS Code?

Salva un'attività in .vscode/tasks.json che esegue il tuo comando di conversione sul file aperto, per esempio python3 ${workspaceFolder}/convert.py ${file} ${fileDirname}/${fileBasenameNoExtension}.csv, poi premi Ctrl+Shift+B (Terminale > Esegui attività) con un qualsiasi file JSON aperto. Il CSV viene scritto accanto al file sorgente ogni volta, senza ridigitare.

Perché il mio CSV da VS Code si apre come un'unica colonna in Excel?

Di solito il file è a posto ed Excel ha indovinato il delimitatore o la codifica sbagliati. Controlla prima il testo grezzo in VS Code: se le virgole e le virgolette sembrano giuste lì, il file è giusto. Reimporta in Excel tramite Dati > Da testo/CSV, scegli il delimitatore corretto e la codifica 65001 (UTF-8), invece di fare doppio clic sul file.

VS Code può convertire JSONC o JSON con commenti in CSV?

Non direttamente: commenti e virgole finali sono JSONC, non JSON, e nessun convertitore li accetta. Rimuovi prima commenti e virgole finali (il pannello Problemi di VS Code segnala le righe esatte), poi converti il JSON pulito. Lo stesso vale per i file delle impostazioni e i file .code-workspace, che sono JSONC per progettazione.

File una tantum? Convertilo nel browser, senza estensioni

Incolla il JSON o carica un file: i dati annidati si appiattiscono in colonne pulite, delimitatori e quotatura sono automatici, e il download è semplice UTF-8. Gratis, senza registrazione, gira interamente nel tuo browser.

Apri il convertitore da JSON a CSV
Tutte le guide