Vai al contenuto principale
FreeOnlineTools Go
Italiano
Confronto

JSON vs YAML: Quale formato di configurazione dovresti usare?

Di {author} · 2026-09-02 aggiornata

Risposta rapida

Utilizza JSON per APIs, scambio di dati e casi in cui è importante un'analisi e una convalida rigorose. Utilizza YAML per file di configurazione, manifest DevOps e casi in cui la leggibilità e i commenti umani sono importanti. YAML è un superset JSON: ogni documento JSON valido è YAML valido.

Introduzione

JSON e YAML sono entrambi formati di serializzazione dei dati leggibili dall'uomo. JSON è rigoroso, minimale e onnipresente nel web APIs. YAML è un superset di JSON che aggiunge commenti, stringhe multilinea, ancoraggi e struttura basata sul rientro, rendendolo popolare per i file di configurazione (Docker Compose, Kubernetes, pipeline CI/CD).

Passo dopo passo

  1. Confrontare sintassi e leggibilità

    JSON utilizza parentesi graffe e virgolette: {"key": "value"}. YAML utilizza il rientro e i due punti: chiave: valore. YAML è più pulito per la configurazione: non sono necessarie virgolette per le stringhe, né virgole tra gli elementi, né parentesi graffe. JSON è più esplicito e meno soggetto a errori per lo scambio di dati.

  2. Confronta le caratteristiche

    YAML supporta: commenti (#), stringhe su più righe (|, >), ancore (&) e alias (*), più documenti in un file (---) e tipi complessi. JSON non supporta nessuno di questi: nessun commento, nessuna stringa multilinea, nessun riferimento. La semplicità di JSON è intenzionale: è un formato di scambio dati, non un linguaggio di configurazione.

  3. Confronta sicurezza e analisi

    L'analisi di JSON è veloce e sicura: JSON.parse è integrato in ogni motore JavaScript. L'analisi YAML è più lenta e complessa: le specifiche YAML sono più di 80 pagine rispetto alle 2 pagine di JSON. YAML presenta rischi per la sicurezza (miliardi di risate attaccano tramite ancore) che JSON no. Utilizza sempre un parser YAML sicuro che disabiliti gli ancoraggi.

  4. Confrontare l'utilizzo dell'ecosistema

    JSON: REST APIs, package.json, tsconfig.json, database NoSQL, app Web. YAML: Docker Compose, manifest Kubernetes, azioni GitHub, playbook Ansible, configurazioni CI/CD, specifiche OpenAPI. JSON domina i dati di runtime; YAML domina la configurazione.

  5. Decidi in base al tuo caso d'uso

    APIs, scambio di dati, NoSQL, stato dell'app Web: JSON. File di configurazione, DevOps, CI/CD, infrastruttura come codice: YAML. Se gli umani lo scrivono a mano: YAML. Se le macchine lo generano e lo consumano: JSON.

Esempi

Stessa configurazione in JSON e YAML

Ingresso: JSON: {"server": {"port": 8080, "host": "localhost"}} YAML: server:\n port: 8080\n host: localhost

Produzione: YAML è più breve del 30% e supporta i commenti. JSON è più rigoroso e universalmente analizzabile.

Problemi comuni

  • Errori di rientro YAML: YAML utilizza il rientro per la struttura e un singolo spazio sbagliato interrompe l'analisi: usa un editor con linting YAML e usa sempre gli spazi, mai le tabulazioni.
  • Attacco YAML con miliardi di risate: gli ancoraggi e gli alias YAML possono creare un'espansione esponenziale, causando DoS: utilizza un parser YAML sicuro che disabilita gli ancoraggi (ad esempio yaml.safe_load in Python).
  • JSON non ha commenti: la specifica JSON vieta i commenti, rendendo i file di configurazione più difficili da annotare: usa YAML per la configurazione modificata dall'uomo, JSON per i dati generati dalla macchina.
  • La digitazione implicita YAML sorprende: YAML converte automaticamente sì/no in booleani e 1.0 in float, il che può interrompere i campi stringa: virgolette esplicitamente le stringhe per evitare coercizioni di tipo impreviste.

Suggerimenti

  • Utilizza YAML per la configurazione creata da utenti umani (Docker Compose, Kubernetes, CI/CD) e JSON per lo scambio di dati generati dalla macchina (APIs, NoSQL, stato dell'app).
  • Utilizza sempre un parser YAML sicuro che disabiliti ancoraggi e alias: non utilizzare mai un caricatore YAML generico su input non attendibili.
  • Quando converti YAML in JSON, aspettati di perdere commenti, stringhe multilinea e ancoraggi: JSON è un sottoinsieme di YAML, non viceversa per le funzionalità.
  • Rientra YAML con 2 spazi in modo coerente: mescolare tabulazioni e spazi o utilizzare un rientro incoerente è l'errore di analisi YAML più comune.

Strumenti correlati

Guide correlate

Riferimenti