Il primo convertitore da JSON a CSV che abbia mai scritto è durato tre giorni di produzione.
Era un & quot; esportazione su foglio di calcolo" pulsante in un pannello di amministrazione Laravel, e la mia logica di conversione era - I' non sono orgoglioso di questo - values.join(","). Ha navigato attraverso i test. Quindi un utente ha esportato un elenco di clienti in cui una società è stata denominata "Smith, Jones &Amp; partner, e ogni colonna dopo aver spostato una posizione a destra. Il loro contabile ha importato 340 righe di dati disallineati prima che qualcuno notasse che i numeri di telefono erano nella colonna e-mail.
La virgola in CSV non è un separatore a cui puoi stringere un join. È una grammatica, definita in RFC 4180, con regole di fuga effettive. Quel bug è il motivo per cui il Convertitore da JSON a CSV Successivamente ho creato per Toolz.dev tratta la fuga come non negoziabile e perché questa guida trascorre del tempo reale sui casi limite, non solo sul percorso felice.
Ecco i cinque metodi che uso effettivamente, quando ognuno vince e dove ognuno morde.
tl; dr: Per conversioni una tantum, incolla il tuo JSON nel Toolz.dev Convertitore da JS a CSV- appiattisce gli oggetti nidificati con la notazione a punti, sfugge correttamente per RFC 4180 e viene eseguito al 100% nel browser Per i lavori ricorrenti, scrivilo:
pd.json_normalize()in Python o iljson2csvPacchetto nel nodo. Convalida con il Formattatore JSON innanzitutto, e mantenere l'originale JSON - CSV appiattimento è a senso unico.
Perché hai bisogno di CSV quando hai già JSON?
Perché le persone che hanno bisogno dei tuoi dati non vivono nel tuo terminale. Ogni richiesta di conversione che ho ricevuto si riduce a una delle cinque situazioni:
Gli analisti lavorano in fogli di calcolo. Excel, Fogli Google, Tableau, Power BI: tutti inalano CSV in modo nativo e si soffocano con JSON nidificato. La conversione dell'output API in CSV è il modo in cui i dati tecnici raggiungono il lato aziendale.
Database Importazione di file flat di importazione in blocco. PostgreSQL COPY e MySQL LOAD DATA Vuoi un input tabular. Esistono colonne JSON, ma il caricamento in tabelle relazionali reali significa prima appiattire.
Le migrazioni hanno bisogno di una lingua franca. Spostando i dati tra un negozio NoSQL e uno relazionale, o tra due piattaforme SaaS, CSV è il formato che entrambe le estremità comprendano in modo affidabile.
La conformità ama i file flat. Alcuni requisiti di archiviazione specificano i formati leggibili dall'uomo. Un CSV si apre in qualsiasi cosa, tra decenni.
Le parti interessate non possono leggere JSON. Un product manager che chiede "posso ottenerlo come foglio di calcolo?" è il trigger più comune. Era il grilletto per il mio pulsante di esportazione rotto.

Cosa rende difficile la conversione da JSON a CSV?
Flat JSON è banale. questo:
[
{"id": 1, "name": "Alice", "email": "[email protected]", "age": 30},
{"id": 2, "name": "Bob", "email": "[email protected]", "age": 25}
]
diventa questo, chiavi per intestazioni, elementi per righe:
id,name,email,age
1,Alice,[email protected],30
2,Bob,[email protected],25
Ma le risposte delle API reali non sono mai piatte. Sembrano così:
[
{
"id": 1,
"name": "Alice",
"address": {"street": "123 Main St", "city": "San Francisco", "state": "CA"},
"skills": ["JavaScript", "Python", "Go"]
}
]
CSV non ha alcun concetto di "dentro" in modo da scegliere una strategia di appiattimento e ognuno ha un costo:
appiattimento a punti- le chiavi annidate diventano intestazioni composte:
id,name,address.street,address.city,address.state,skills
1,Alice,123 Main St,San Francisco,CA,"JavaScript; Python; Go"
Colonne indicizzate per array- skills.0, skills.1, skills.2. Prevedibile, ma un record con 14 abilità produce 14 colonne per tutti.
Cellule codificate JSON- infilare il JSON grezzo nella cella, doppiamente citato Senza perdita, illeggibile, e rende tristi gli analisti.
La notazione punto con array uniti è l'impostazione predefinita giusta per il consumo umano: it's cosa Convertitore Toolz.dev produce. Le colonne indicizzate vincono quando il codice a valle richiede che ogni elemento sia indirizzabile. JSON-IN-CELLS è l'ultima risorsa per il viaggio di andata e ritorno.
Metodo 1: come si converte JSON in CSV online?
Ideale per: Conversioni una tantum, non sviluppatori, qualsiasi cosa sotto una dozzina di MB.
- Apri il Convertitore da JSON a CSV.
- Incolla il tuo JSON - una serie di oggetti, o un singolo oggetto.
- Lo strumento rileva la struttura, appiattisce gli oggetti nidificati alla notazione a punti e renderizza il CSV istantaneamente.
- copialo o scarica il
.csv.
Il motivo per cui ho predefinito questo su uno script per qualsiasi cosa non ricorrente: configurazione zero, escape RFC 4180 corretto (ho imparato quella lezione), unione automatica delle chiavi su oggetti incoerenti e, poiché it's lato client, la risposta API piena di e-mail dei clienti che hai appena incollato non lascia mai la tua macchina Guarda la scheda Rete se non lo fai' non credermi; che's il test che applico a ogni convertitore online e la maggior parte lo fallisce.
Dove è lo strumento sbagliato: conversioni ricorrenti (script it) e nidificazione profondamente patologica dove vorrai scegliere la strategia di appiattimento.

Metodo 2: come si converte JSON in CSV in JavaScript?
Ideale per: Crea pipeline, servizi di nodi, logica di trasformazione personalizzata.
Qui's la versione minima corretta - nota la fuga, che è la parte che il mio disastro di tre giorni ha saltato:
function jsonToCsv(jsonArray) {
if (!jsonArray.length) return "";
const headers = Object.keys(jsonArray[0]);
const csvRows = [
headers.join(","),
...jsonArray.map(row =>
headers.map(header => {
const value = row[header] ?? "";
// RFC 4180: double embedded quotes, wrap anything containing , " or newline
const escaped = String(value).replace(/"/g, '""');
return /[,"\n\r]/.test(escaped) ? `"${escaped}"` : escaped;
}).join(",")
)
];
return csvRows.join("\n");
}
Per l'input annidato, appiattisci prima e unisci i tasti: prendere le intestazioni solo dal primo oggetto è il secondo bug più comune nei convertitori arrotolati a mano:
function flattenObject(obj, prefix = "") {
const result = {};
for (const [key, value] of Object.entries(obj)) {
const newKey = prefix ? `${prefix}.${key}` : key;
if (value && typeof value === "object" && !Array.isArray(value)) {
Object.assign(result, flattenObject(value, newKey));
} else if (Array.isArray(value)) {
result[newKey] = value.join("; ");
} else {
result[newKey] = value;
}
}
return result;
}
function nestedJsonToCsv(jsonArray) {
const flattened = jsonArray.map(item => flattenObject(item));
// Union of ALL keys, not just the first object's
const headers = [...new Set(flattened.flatMap(Object.keys))];
// ...then emit rows exactly as in jsonToCsv above
}
Oppure salta il rotolamento manuale: il json2csv Il pacchetto ha gestito questi bordi per anni:
import { Parser } from "json2csv";
const parser = new Parser({ flatten: true });
const csv = parser.parse(data);
Metodo 3: come si converte JSON in CSV in Python?
Ideale per: Flussi di lavoro di data science, tutto ciò che già tocca i panda.
Il panda one-liner copre JSON piatto:
import pandas as pd
df = pd.read_json("data.json")
df.to_csv("output.csv", index=False)
La funzione veramente utile è pd.json_normalize()- creato appositamente per le risposte API nidificate:
import pandas as pd
import requests
response = requests.get("https://api.example.com/users")
df = pd.json_normalize(response.json())
print(df.columns.tolist())
# ['id', 'name', 'skills', 'address.street', 'address.city', 'address.state']
# Arrays still need a decision — join them explicitly:
df["skills"] = df["skills"].apply(lambda x: "; ".join(x) if isinstance(x, list) else x)
df.to_csv("output.csv", index=False)
Nota che json_normalize appiattisce nidificata oggetti ma lascia schiera come elenchi Python: se salti il passaggio di unione, le celle CSV contengono ['JavaScript', 'Python'] Verbatim. Tutti lo colpiscono una volta.
Nessun panda disponibile? La libreria standard gestisce bene JSON piatto:
import json, csv
with open("data.json") as f:
data = json.load(f)
with open("output.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
Metodo 4: come si converte JSON in CSV dalla riga di comando?
Ideale per: script shell, pipeline CI, server in cui l'installazione di panda è eccessivo.
jq Lo fa nativamente con @csv, che sfugge correttamente:
cat data.json | jq -r '
(.[0] | keys_unsorted) as $keys |
($keys | @csv),
(.[] | [.[$keys[]]] | @csv)
'
csvkit's in2csv è l'opzione di basso pensiero:
pip install csvkit
in2csv data.json > output.csv
e mugnaio (mlr) brilla quando si desidera filtrare nello stesso passaggio:
mlr --json2csv filter '$age > 25' data.json > output.csv
La componibilità è il punto - curl -s api.example.com/data | jq ... > report.csv è una pipeline completa da API a foglio di calcolo in una riga di cron.
Metodo 5: puoi importare JSON direttamente in Excel o Fogli Google?
Ideale per: Non sviluppatori, dati di aggiornamento dal vivo, importazioni una tantum.
Eccellere: Dati → Ottieni dati → dal Web, incolla l'URL dell'API e Power Query fornisce un editor visivo per espandere i record nidificati prima del caricamento. Genuinamente buono per ripetuti aggiornamenti della stessa fonte.
Fogli Google: Estensioni → App script, quindi una piccola funzione di recupero:
function importJSON(url) {
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
if (!Array.isArray(data) || data.length === 0) return [["No data"]];
const headers = Object.keys(data[0]);
const rows = data.map(item => headers.map(h => item[h] ?? ""));
return [headers, ...rows];
}
utilizzato in una cella come =importJSON("https://api.example.com/data").
onesto prendere: per le importazioni una tantum, convertire con il strumento in linea E l'apertura del CSV è più veloce di entrambi. I percorsi nativi del foglio di calcolo fanno guadagnare il costo di installazione solo quando i dati si aggiornano in una pianificazione.
Quale metodo dovresti scegliere?
| metodo | impostazione | JSON nidificato | Uso ricorrente | I dati rimangono locali |
|---|---|---|---|---|
| convertitore online | nessuno | automatico | manuale ogni volta | Sì, lato cliente |
| JavaScript / JSON2CSV | Installazione npm | per flatten |
eccellente | certo |
| Pitone / Panda | Installazione di pip | json_normalize |
eccellente | certo |
| JQ / CSVKIT / MLR | gestore di pacchetti | Percorsi manuali | Eccellente (Cron/Ci) | certo |
| Excel / Fogli | Conto/App | Interfaccia utente di query di alimentazione | Buono (aggiornamento automatico) | Excel: Sì; Fogli: server di Google |
La mia regola: raggiungere lo strumento del browser fino alla terza volta I'm convertendo la stessa forma di dati - quindi diventa uno script.
Quali casi edge interrompono la conversione da JSON a CSV?
Quattro trappole rappresentano quasi tutte le esportazioni rotte che ho debug:
chiavi incoerenti. L'oggetto 1 ha email, l'oggetto 2 ha phone, l'oggetto 3 ha entrambi Prendi le intestazioni solo dal primo oggetto e rilasci silenziosamente i dati La correzione è un'unione di tasti su tutti gli oggetti, con valori mancanti come celle vuote - cosa che i buoni strumenti fanno automaticamente.
Caratteri speciali non evasi. Il problema di "Smith, Jones & Per RFC 4180: avvolgi i valori contenenti virgole, virgolette o nuove righe tra virgolette doppie e raddoppia qualsiasi virgoletta incorporata ("He said ""hello""").
file di grandi dimensioni. Dopo circa 100 MB, l'analisi dell'intero file diventa dolorosa. Stream invece - jq Stream, panda legge in blocchi e il formato delle righe JSON (un oggetto per riga) rende entrambi più facili. Per i file fino a poche dozzine di MB, lo strumento del browser va bene poiché non c'è caricamento.
codifica. Nomi e indirizzi portano caratteri non ASCII. Mantieni tutto ciò che UTF-8 end-to-end e sii sospettoso di Excel su Windows, che storicamente voleva che una distinta base rilevasse UTF-8 correttamente.
E una pratica che non è facoltativa: Convalida prima di convertire. Un file JSON troncato fallisce confusamente a metà conversione ma ovviamente nel Formattatore JSON. Trenta secondi di convalida batte dieci minuti di "perché il mio CSV è vuoto".
Domande frequenti
Come faccio a convertire JSON in CSV online gratuitamente?
Incolla il tuo JSON nel Convertitore da JSON a CSV su Toolz.dev- genera istantaneamente CSV con oggetti nidificati appiattiti e gestiti in fuga, quindi ti consente di copiare o scaricare il risultato Nessuna registrazione ed elaborazione è al 100% lato client, quindi i tuoi dati non lasciano mai il tuo browser.
Posso convertire JSON nidificato in CSV?
si. Gli oggetti nidificati si appiattiscono alle intestazioni di notazione a punti (address.city), e gli array vengono uniti in una stringa delimitata o suddivisi in colonne indicizzate. la Convertitore Toolz.dev applica automaticamente la notazione a punti; in Python, pd.json_normalize() fa lo stesso.
Come faccio a convertire un file JSON in CSV in Python?
import pandas as pd; pd.read_json("data.json").to_csv("output.csv", index=False) Per json piatto. Per strutture annidate, utilizzare pd.json_normalize(data) innanzitutto - e ricorda di unire tu stesso qualsiasi colonna di array, poiché normalizza gli elenchi delle foglie intatti.
Qual è il modo migliore per convertire file JSON molto grandi?
Stream anziché caricare: jq sulla riga di comando o panda con letture a pezzi. La conversione del file in linee JSON (un oggetto per riga) rende prima lo streaming molto più semplice. Gli strumenti del browser sono comodi fino a poche decine di MB; oltre a ~100 MB, usa la riga di comando.
Come faccio a convertire CSV in JSON?
la Convertitore da CSV a JSON inverte il viaggio - ogni riga diventa un oggetto calettato dalla riga di intestazione Programmaticamente: pd.read_csv("data.csv").to_json(orient="records").
Perché il mio CSV ha citazioni attorno ad alcuni valori?
Questo è il comportamento corretto, non un bug. RFC 4180 richiede doppie virgolette attorno a qualsiasi valore contenente virgole, nuove righe o caratteri di virgole, con virgolette incorporate raddoppiate. Fogli di calcolo e parser li spogliano in lettura.
La conversione da JSON a CSV è senza perdita?
Per JSON piatto, sì. Per JSON annidato, i valori sopravvivono ma la gerarchia lo fa' t - le intestazioni della notazione punto sono appiattite rappresentanza, e non puoi sempre ricostruire l'esatto nidificazione originale da loro. Mantieni la fonte JSON; tratta il CSV come una vista derivata.
Perché le mie colonne sono disallineate dopo la conversione?
Quasi sempre un fallimento che sfugge: un valore contenente una virgola era & #39; t citato, quindi i parser vedono colonne extra da quel punto in poi It' s il bug esatto dal mio pulsante di esportazione Laravel Usa un convertitore che implementa RFC 4180 anziché i valori di unione delle stringhe - e se hai scritto il tuo, testalo con un valore come Smith, Jones & Partners.
Come posso convertire JSON in CSV in Excel o Fogli Google?
Entrambe le app importano JSON tramite un helper anziché un incolla. In Excel, usa i dati → Ottieni dati → da File → da JSON, quindi appiattisci la query in Power Query e chiudi e carica. In Fogli Google, incolla piccoli array tramite uno script di app temporanee o converti con il Convertitore da JSON a CSV innanzitutto e apri il file risultante, solitamente il percorso più veloce per una tantum.
Quale metodo da JSON a CSV dovrei usare?
Per una rapida edizione, un convertitore lato client è più veloce e mantiene i dati privati. Per le pipeline ripetibili, utilizzare Python con panda; per file enormi, streaming con jq sulla riga di comando e raggiungi l'importazione di fogli di calcolo solo quando i non sviluppatori possiedono il flusso di lavoro. Abbina lo strumento a quanto spesso ripeti il lavoro, non solo alle dimensioni del file.
Abbina il metodo al lavoro
JSON-to-CSV sembra un rilievo risolto fino a quando una virgola nel nome di un'azienda sposta 340 righe di dati dei clienti una colonna a destra. Il metodo conta meno che rispettare il formato: escape per RFC 4180, unisci le tue chiavi, decidi di proposito la tua strategia di appiattimento e mantieni il JSON originale.
Per la prossima conversione una tantum, il Convertitore da JSON a CSV è il percorso di quindici secondi. Convalida prima con il Formattatore JSON, e quando i dati devono tornare indietro, il Convertitore da CSV a JSON chiude il ciclo: tutti e tre nel tuo browser, nessuno di loro vede mai il lato del tuo server dati.
Articoli correlati:
- La guida definitiva a JSON Tools (2026)
- Come formattare JSON Online: guida completa con esempi
- Guida gratuita agli strumenti di testo online



