Onde tirar as aspas muda o valor
O YAML decide sozinho o tipo de um valor sem aspas, e é aí que acontecem os acidentes.
version: 1.10 é lido como número e vira 1.1: o zero final some e a versão passa a significar outra coisa. zip: 01234 também vira o número 1234 e perde o zero inicial. CEPs, matrículas e telefones precisam de aspas, na forma "01234".
Valores como 12:30, no, yes e on continuam como texto nesta ferramenta. Já os analisadores que seguem as regras antigas, entre eles o PyYAML e o Ruby, leem no como falso — por isso o código de país NO acaba virando false, um caso conhecido. Se a configuração passa por várias ferramentas, coloque aspas nessas palavras também.
Regras de indentação
Indente apenas com espaços. Tabulação é erro de sintaxe. Se o seu editor insere tabulações, troque para espaços nos arquivos YAML.
Itens do mesmo nível precisam ficar exatamente alinhados. Uma coluna a mais e a leitura falha ali mesmo. Esta ferramenta informa a linha e a coluna em que parou.
Âncoras e chaves de mesclagem
&nome marca um bloco e *nome cola esse bloco onde for preciso. Com <<: o bloco é despejado dentro de outro mapa.
defaults: &d
retry: 2
image: node
job:
<<: *d
script: test
Esta ferramenta resolve as chaves de mesclagem, então o JSON sai com retry e image dentro de job. Sem resolver, sobraria uma chave literal "<<", inútil dali para frente. É uma sintaxe constante nos arquivos do GitLab CI e do Docker Compose.
O que se perde no caminho até o JSON
Os comentários somem. JSON não tem sintaxe de comentário, então converter uma configuração e salvar por cima do original joga fora todas as anotações que alguém deixou ali. Guarde o original.
Vários documentos também não cabem. Quando um arquivo traz documentos separados por ---, esta ferramenta acusa erro em vez de emitir só o primeiro em silêncio e deixar o resto desaparecer sem ninguém notar. Separe um manifesto do Kubernetes com vários documentos e converta um por vez.
Datas viram texto. O YAML reconhece data como tipo; o JSON não tem equivalente.
No sentido inverso
Ao passar de JSON para YAML, quase todas as aspas caem e o resultado fica bem mais legível. Elas permanecem nas strings com zero à esquerda e nas que se parecem com true, porque tirá-las ali mudaria o sentido. Continuarem é o comportamento certo, não um defeito de formatação.