Vai al contenuto

Formattatore e validatore YAML

YAML Formatter & Validator

Riporta il YAML a un’indentazione coerente, lo valida e segnala gli errori di tabulazione e di ancora che rompono i parser.

Reindenta un file YAML in modo coerente e dice che cosa un parser diverso leggerebbe in un altro modo. È un lettore YAML 1.2 che conserva commenti, ancore, tag e scalari a blocco, quindi l’uscita è il proprio documento con il layout sistemato — non un giro attraverso un modello di dati che avrebbe buttato via i commenti.

🔒 Funziona interamente nel tuo browseryamlformatvalidateconfig
Uscita
Indentazione

YAML in ingresso

Trascina un file .yaml

Letto solo in questa scheda. Non viene caricato niente.

YAML formattato

Formattato.

Letto, ma su questi punti i parser non vanno d’accordo

  • 19:22 — `no` in YAML 1.2 è la stringa "no". Un parser YAML 1.1 lo legge come booleano: mettilo tra virgolette, o scrivi true/false, così i due concordano.

Documenti

1

Chiavi

30

Voci di elenco

8

Ancore / alias

1 / 1

Avvisi

1

Che cosa fa e che cosa non fa questo formattatore

  • · Letto con lo schema core di YAML 1.2. yes e no e on e off sono stringhe, e 0755 è il 755 decimale, non ottale. I valori che un parser 1.1 leggerebbe diversamente sono segnalati sopra come avvisi.
  • · Commenti, ancore (&), alias (*), tag e gli scalari a blocco | e > restano tutti come sono. Nemmeno l’ordine dei valori viene cambiato.
  • · Indentazione con tabulazioni, chiavi doppie, un alias usato prima di essere definito e una virgoletta non chiusa vengono presi tutti come errori, con riga e colonna.
  • · La chiave di merge << è una funzionalità di YAML 1.1, ma i file di docker-compose e di Ansible la usano così tanto che viene applicata nella conversione verso JSON — con un avviso che lo dice.
  • · Un commento dentro una collezione in linea come [a, b] non ha una riga a cui attaccarsi e va perso. Tutti gli altri commenti restano.

Per convertire in JSON o TOML usa il convertitore JSON ⇄ YAML, e per controllare un documento contro uno schema usa il validatore JSON Schema.

Come si usa

  1. Incollare il manifest o la configurazione

    Un manifest Kubernetes, un file di CI, un docker-compose. Più documenti separati da `---` vengono letti come un flusso e contati separatamente.

  2. Scegliere lo stile degli elenchi

    L’unica impostazione su cui si litiga davvero: se `- item` stia allo stesso livello della sua chiave o indentato sotto di essa. Sono entrambi YAML valido; i manifest Kubernetes per convenzione usano la forma allo stesso livello.

  3. Leggere gli avvisi

    I valori il cui significato dipende da quale versione di YAML implementa il lettore — `yes`, `no`, `0755` — vengono elencati con riga e colonna. Sono quelli che rompono un rilascio su uno strumento diverso.

  4. Oppure passare l’uscita a JSON

    La stessa analisi, resa come JSON, che è il modo più rapido di vedere a che cosa un valore si è risolto davvero — compreso quello in cui si è espansa una chiave di merge.

Domande frequenti

Perché qui `no` è una stringa?

Perché lo dice lo schema core di YAML 1.2: gli unici booleani sono `true` e `false`. YAML 1.1 — che PyYAML usa ancora per impostazione predefinita — legge `no`, `off` e `n` come falso. Ogni valore su cui i due non concordano viene segnalato come avviso, perché è una differenza vera di comportamento, non di stile.

Le mie ancore e i miei alias vengono conservati?

Nell’uscita YAML sì: `&res` e `*res` escono come sono stati scritti, e il conteggio compare nelle statistiche. La vista JSON deve espanderli, perché JSON non ha modo di dire «di nuovo lo stesso nodo».

Supporta le chiavi di merge?

`<<:` è una funzione di YAML 1.1 e non fa parte della 1.2 — ma i file docker-compose e Ansible la usano di continuo, quindi viene applicata nella conversione verso JSON, con un avviso che dice che è successo. Nell’uscita YAML resta esattamente com’è scritta.

È sparito un commento. Perché?

Quasi certamente era dentro una collezione in stile flow — `[a, # nota\n b]`. Una collezione flow viene ristampata su una riga sola, e lì un commento non ha una riga a cui attaccarsi. Ogni commento su una riga propria, o in coda a un valore, sopravvive.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.