JSON o YAML
In sintesi: JSON delimita con le parentesi graffe e YAML con l'indentazione: le macchine ricevono JSON, gli umani che modificano la configurazione ricevono YAML. I commenti, gli anchor e le strutture multi-documento non sopravvivono.

In sintesi: usa JSON per i dati macchina-a-macchina e YAML per la configurazione che gli umani modificano; preferisci YAML quando hai bisogno di commenti, testo su più righe o anchor, e JSON quando ogni linguaggio deve analizzare lo stesso payload senza ambiguità.
Fianco a fianco
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
Stessa struttura. YAML elimina la punteggiatura e guadagna uno spazio per un commento.
Dove differiscono
| JSON | YAML | |
|---|---|---|
| Struttura | Parentesi graffe e virgole | Indentazione |
| Commenti | Nessuno | Sì |
| Stringhe | Virgolette doppie, escaping richiesto | Di solito senza virgolette |
| Testo su più righe | Escape \n o array |
Scalar a blocco ` |
| Riutilizzo | Nessuno | Anchor & e alias * |
| Documenti multipli | Avvolgi in un array | Separatori --- |
| Velocità di parsing | Veloce | Più lenta, regole di indentazione |
| Ambiguità | Molto bassa | no analizzato come booleano, indentazione di un livello fuori posto |
Quest'ultima riga è il vero costo di YAML. In YAML 1.1, country: NO produce il booleano false, e version: 1.0 può diventare un float. JSON non ha affatto tipizzazione implicita.
Scegliere
JSON: corpi di richiesta e risposta, messaggi da servizio a servizio, colonne JSON nei database, qualsiasi cosa che deve essere analizzata allo stesso modo in ogni linguaggio.
YAML: ecosistemi in cui è il default (Kubernetes, Ansible, GitHub Actions, Docker Compose); configurazione che richiede spiegazioni; file dominati da testo lungo come certificati, script o SQL.
Cosa si perde nella conversione
YAML → JSON: tutti i commenti, il riutilizzo tramite anchor (espanso in duplicati), tutti i documenti tranne il primo, e la grafia originale di date e booleani.
JSON → YAML: la distinzione stringa/numero si indebolisce, quindi "8080" e 8080 richiedono entrambi virgolette esplicite per restare sicuri.
Converti per migrazioni e ispezioni una tantum. Non mantenere lo stesso file in due formati come viste parallele.
FAQ
Come devo decidere tra JSON e YAML?
Parti da chi legge e mantiene il file: usa JSON quando è un programma a generarlo, attraversa i confini tra linguaggi e deve essere analizzato in modo prevedibile; usa YAML quando è un umano a modificarlo e necessita di spiegazioni sui campi o di lungo testo su più righe. Si convertono l'uno nell'altro, ma non mantenere la stessa configurazione in entrambi i formati a lungo termine.
Perché YAML produce più ambiguità di tipo?
YAML ha tipizzazione implicita, quindi valori come NO, on o 1.0 possono diventare booleani, date o numeri. JSON ha solo tipi espliciti: una stringa deve essere tra virgolette, il che rende il parsing più prevedibile tra linguaggi.
I commenti e gli anchor devono sopravvivere quando si converte YAML in JSON?
No. I commenti, gli anchor e i documenti multipli di YAML non possono essere rappresentati in JSON; gli anchor vengono espansi in contenuto duplicato. Se devi preservarli, usa una libreria YAML con una Document API invece di un round-trip tramite oggetti.