JSON, YAML, CSV: Quando usare quale e come convertire
Scarichi un dataset ed è in CSV. La tua API restituisce JSON. Il tuo file di configurazione è in YAML. Un collega ti invia un file JSON e te lo chiede come foglio di calcolo. Un altro collega ti consegna un config YAML e ti serve in JSON per uno strumento diverso.
La conversione tra formati dati è una di quelle attività che sembra banale finché non la stai facendo davvero. Capire quando usare quale formato e come passare dall'uno all'altro fa risparmiare tempo reale.
I tre formati in sintesi
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Cos'è: Un formato testuale per dati strutturati che supporta oggetti (coppie chiave-valore), array (liste ordinate), stringhe, numeri, booleani e null.
Punti di forza: Leggibile dalle macchine, ampiamente supportato in ogni linguaggio di programmazione, gestisce naturalmente i dati annidati, la sintassi rigida previene le ambiguità.
Punti deboli: Verboso (molte parentesi graffe, quadre e virgolette), meno leggibile per l'uomo rispetto a YAML, nessun supporto per i commenti.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Cos'è: Un formato di serializzazione dati pensato per essere leggibile dall'uomo che usa l'indentazione al posto di parentesi graffe e quadre. È un superset di JSON, il che significa che un JSON valido è anche un YAML valido.
Punti di forza: Estremamente leggibile, supporta i commenti, meno rumore visivo, ottimo per i file di configurazione.
Punti deboli: Sensibile all'indentazione (facile da rompere con spaziature errate), alcuni comportamenti di parsing sorprendenti, più lento da analizzare rispetto a JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Cos'è: Un formato testuale piatto in cui ogni riga è un record e i valori all'interno di una riga sono separati da virgole (o a volte da punti e virgola o tabulazioni).
Punti di forza: Universale (ogni foglio di calcolo, database e strumento dati lo supporta), compatto per i dati tabulari, facile da leggere e creare.
Punti deboli: Nessun supporto per dati annidati, nessun tipo di dato (tutto è una stringa), nessuno standard per i caratteri speciali, limitato a tabelle piatte.
Lo sapevi? YAML è tecnicamente un superset di JSON. Questo significa che qualsiasi documento JSON valido è automaticamente un documento YAML valido. Puoi incollare del JSON in un parser YAML e funzionerà. Il contrario non è vero — le funzionalità di YAML (commenti, ancore, stringhe multiriga) non hanno un equivalente JSON.
Quando usare quale
| Caso d'uso | Formato migliore | Perché |
|---|---|---|
| Richieste e risposte API | JSON | Standard del settore, ogni linguaggio ha supporto nativo |
| File di configurazione | YAML | Leggibile dall'uomo, supporta i commenti per la documentazione |
| Dati da foglio di calcolo | CSV | Si apre direttamente in Excel, Google Sheets, ecc. |
| Esportazioni da database | CSV | I dati tabulari piatti si mappano direttamente su righe e colonne |
| Dati annidati complessi | JSON o YAML | CSV non può rappresentare l'annidamento |
| Scambio dati tra sistemi | JSON | Parsing non ambiguo, specifica rigorosa |
| Configurazione editata a mano | YAML | Più facile da leggere e modificare manualmente |
| Liste di dati semplici | CSV | Leggero, senza overhead |
Convertire tra formati
Da JSON a YAML
Questa è la conversione di configurazione più comune. Hai un config JSON da uno strumento e ti serve YAML per un altro. La conversione è semplice perché YAML supporta tutto ciò che supporta JSON.
{"server": {"host": "0.0.0.0", "port": 8080}}
Diventa:
server:
host: 0.0.0.0
port: 8080
Da YAML a JSON
Passare da YAML a JSON è altrettanto semplice, ma perdi i commenti (JSON non li supporta) e il risultato è più verboso.
Da JSON a CSV
Funziona bene per array JSON piatti (array di oggetti con le stesse chiavi). Ogni oggetto diventa una riga e ogni chiave diventa un'intestazione di colonna.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Diventa:
name,age
Alice,30
Bob,25
Attenzione La conversione da JSON a CSV fallisce quando il JSON contiene oggetti annidati o array. CSV è piatto — non ha modo di rappresentare un array "skills" o un oggetto "address" annidato. I dati annidati devono essere appiattiti (address.city, address.country come colonne separate) o serializzati come stringa all'interno di una cella CSV.
Da CSV a JSON
Ogni riga diventa un oggetto, con le intestazioni delle colonne come chiavi. Questo è pulito per dati tabulari semplici.
Da CSV a YAML
Meno comune, ma segue la stessa logica: ogni riga diventa una mappatura YAML e l'intero file diventa una sequenza YAML.
Errori comuni
Problemi di codifica CSV
I file CSV possono usare diverse codifiche dei caratteri (UTF-8, Latin-1, Windows-1252). Se apri un CSV e vedi caratteri illeggibili come "München" invece di "München," è un problema di codifica. Usa sempre UTF-8 quando possibile.
Confusione sul delimitatore CSV
Non tutti i CSV usano la virgola. I CSV europei spesso usano il punto e virgola perché la virgola è usata come separatore decimale in molti formati numerici europei. I valori separati da tabulazione (TSV) sono un'altra variante comune.
Errori di indentazione YAML
YAML usa l'indentazione (spazi, mai tabulazioni) per definire la struttura. Un'indentazione incoerente, o la mescolanza di tabulazioni e spazi, produce errori di parsing o interpretazioni errate silenziose. Usa esattamente 2 spazi per livello di indentazione e configura il tuo editor per inserire spazi al posto delle tabulazioni.
Attenzione In YAML, la stringa no viene interpretata come booleano false, e yes viene interpretata come true. La stringa 1.0 viene interpretata come numero. Se intendi le stringhe letterali "no," "yes," o "1.0," devi usare le virgolette: "no", "yes", "1.0". Questa è una delle trappole più famose di YAML.
Virgole finali in JSON
JSON non permette virgole finali. Questo è valido in JavaScript ma non in JSON:
{"name": "Alice", "age": 30,} // JSON non valido: virgola finale
Prestazioni con file di grandi dimensioni
Per dataset molto grandi (milioni di righe), CSV è più efficiente di JSON o YAML perché ha un overhead minimo per record. JSON aggiunge parentesi e virgolette per ogni valore, il che aumenta significativamente la dimensione del file per grandi dati tabulari.
Strumenti pratici per la conversione
Per conversioni rapide e occasionali, gli strumenti basati su browser sono l'opzione più veloce. Incolli o carichi i tuoi dati, selezioni il formato di destinazione e ottieni il risultato immediatamente.
Suggerimento Converti istantaneamente tra i formati JSON, YAML e CSV: Come convertire i formati dati. Incolla i tuoi dati, scegli il formato di destinazione, e copia o scarica il risultato.
Per lavorare con JSON in particolare, un formattatore che valida e indenta il tuo JSON è inestimabile:
- JSON Formatter — valida, formatta e minimizza JSON
- Convertitore JSON a CSV — converti array JSON in CSV
- Convertitore YAML-JSON — converti tra YAML e JSON
- Visualizzatore CSV — visualizza ed esplora file CSV
Converti i tuoi dati ora:
Tutti gli strumenti sono gratuiti e funzionano direttamente nel tuo browser.