Che tu stia configurando un'applicazione web, scambiando dati tra servizi, analizzando un'esportazione da foglio di calcolo o leggendo la risposta di un'API, incontrerai dati memorizzati in formati di testo strutturati. I quattro più comuni sono JSON, YAML, CSV e XML.
Ogni formato è stato progettato con obiettivi diversi, e scegliere quello giusto dipende dal tuo caso d'uso. Questo articolo spiega cos'è ciascun formato, come appare, quando usarlo e come si confrontano tra loro.
JSON — JavaScript Object Notation
JSON è diventato il formato di interscambio dati dominante sul web. Nonostante il nome, è indipendente dal linguaggio e utilizzato ovunque.
Esempio di sintassi:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Caratteristiche principali:
- Coppie chiave-valore con una sintassi pulita e leggibile
- Supporta stringhe, numeri, booleani, array, oggetti e null
- Nessun commento consentito nel JSON standard
- Sintassi rigorosa — virgole finali e apici singoli sono errori
Casi d'uso comuni: API REST, file di configurazione (package.json, tsconfig.json), database NoSQL (MongoDB), scambio di dati tra frontend e backend.
Buono a sapersi. La sintassi rigorosa di JSON è sia un punto di forza che una debolezza. Rende il parsing affidabile e non ambiguo, ma significa anche che una singola virgola mancante o una virgola finale in più interromperà l'intero file.
YAML — YAML Ain't Markup Language
YAML è stato progettato per essere il formato di serializzazione dei dati più leggibile possibile. Usa l'indentazione al posto delle parentesi ed è particolarmente popolare per i file di configurazione.
Esempio di sintassi:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Caratteristiche principali:
- Struttura basata sull'indentazione (nessuna parentesi)
- Supporta commenti con
# - Supporta tutti i tipi di dati JSON e altri ancora (date, stringhe multilinea)
- Sensibile agli spazi bianchi — un'indentazione errata interrompe il file
Casi d'uso comuni: file Docker Compose, manifest Kubernetes, pipeline CI/CD (GitHub Actions, GitLab CI), playbook Ansible, configurazione Hugo/Jekyll.
YAML è un superset di JSON, il che significa che qualsiasi documento JSON valido è anche YAML valido. Tuttavia, la flessibilità di YAML può essere un'arma a doppio taglio — la sua conversione implicita dei tipi (ad esempio, yes interpretato come booleano true, o 3.10 che diventa 3.1) ha causato molti bug sottili.
CSV — Comma-Separated Values
CSV è il formato di dati strutturati più semplice. Memorizza dati tabulari come testo semplice, con ogni riga che rappresenta un record e valori separati da virgole (o talvolta punto e virgola, tabulazioni o altri delimitatori).
Esempio di sintassi:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Caratteristiche principali:
- Estremamente semplice — solo testo con delimitatori
- Nessun tipo di dato — tutto è una stringa
- Nessun modo standard per rappresentare dati annidati
- Nessuno standard universale ufficiale (RFC 4180 esiste ma non è universalmente seguito)
- Le dimensioni dei file sono molto ridotte
Casi d'uso comuni: Esportazioni da fogli di calcolo, importazioni/esportazioni database, analisi dati (pandas, R), scambio di dati semplice, file di log.
La semplicità di CSV è il suo più grande punto di forza e la sua più grande limitazione. È perfetto per dati tabulari piatti ma non può rappresentare strutture gerarchiche. I casi limite (virgole nei valori, campi multilinea, problemi di codifica) rendono il parsing più complesso di quanto possa sembrare inizialmente.
XML — Extensible Markup Language
XML era il formato di interscambio dati dominante prima che JSON prendesse il sopravvento. Usa una sintassi basata su tag simile a HTML e supporta funzionalità complesse come schemi, namespace e trasformazioni.
Esempio di sintassi:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Caratteristiche principali:
- Struttura basata su tag con tag di apertura e chiusura
- Supporta attributi, namespace, schemi (XSD) e trasformazioni (XSLT)
- Supporta commenti
- Molto verboso rispetto ad altri formati
- Standard estremamente ben definito con validazione rigorosa
Casi d'uso comuni: Servizi web SOAP, integrazioni enterprise, formati documento (DOCX, SVG, RSS), file di configurazione negli ecosistemi Java/.NET, scambio di dati governativi e finanziari.
XML è più verboso di JSON o YAML, ma le sue capacità di validazione tramite schema lo rendono inestimabile in contesti dove l'integrità dei dati e i contratti formali tra sistemi sono critici.
Confronto diretto
| Caratteristica | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Leggibilità | Buona | Eccellente | Buona (tabulare) | Discreta |
| Verbosità | Bassa | Bassa | Molto bassa | Alta |
| Commenti | No | Sì | No | Sì |
| Dati annidati | Sì | Sì | No | Sì |
| Tipi di dati | Base | Ricchi | Nessuno (tutte stringhe) | Tramite schema |
| Validazione schema | JSON Schema | Nessuno standard | No | XSD |
| Dimensione file | Piccola | Piccola | Minima | Grande |
| Velocità di parsing | Veloce | Moderata | Veloce | Moderata |
| Dominio principale | API web | Config DevOps | Dati/fogli di calcolo | Enterprise |
Quando usare quale
- Scegli JSON quando costruisci API web, memorizzi configurazioni per progetti JavaScript/TypeScript o scambi dati tra servizi. È la scelta predefinita per la maggior parte delle applicazioni moderne.
- Scegli YAML quando scrivi file di configurazione che gli esseri umani leggeranno e modificheranno frequentemente. La sua leggibilità e il supporto ai commenti lo rendono ideale per DevOps e infrastructure-as-code.
- Scegli CSV quando lavori con dati tabulari, importi/esporti da fogli di calcolo o database, o quando la dimensione del file deve essere minima. Evitalo per qualsiasi cosa gerarchica.
- Scegli XML quando lavori con sistemi enterprise, API SOAP o contesti che richiedono una validazione formale tramite schema. È anche la scelta giusta quando hai bisogno di markup orientato ai documenti (come SVG o RSS).
Conversione tra formati
La conversione tra questi formati è un'operazione comune. Ecco alcune cose da tenere a mente:
- Da JSON a YAML (e viceversa) è generalmente senza perdita di dati poiché YAML è un superset di JSON.
- Da CSV a JSON/YAML funziona bene per dati piatti ma richiede decisioni sulla struttura per output annidati.
- Da XML a JSON può perdere informazioni (attributi, namespace, ordinamento) perché JSON non ha concetti equivalenti.
- Da qualsiasi formato a CSV funziona solo se i dati sono piatti o possono essere significativamente appiattiti.
Consiglio. Quando converti tra formati, verifica sempre l'output. Le conversioni automatiche possono perdere dati silenziosamente, specialmente con attributi XML, conversione dei tipi YAML o casi limite di codifica CSV.
Per approfondire
ToolK.io fornisce strumenti gratuiti per convertire tra JSON, YAML, CSV e XML, formattare e validare i tuoi dati, e esplorare tutorial correlati per lavorare con dati strutturati nei tuoi progetti.
