Ambos são formatos de configuração legíveis, mas YAML depende de indentação e tem coerção implícita, enquanto TOML usa tipos e seções explícitos. Escolha conforme a ferramenta e a segurança da edição.
YAML representa mapas, sequências e escalares. No estilo de blocos usual, a indentação define a hierarquia. Kubernetes e Docker Compose o usam para configuração. Indente com espaços, não tabs; dois espaços por nível são uma convenção, enquanto a estrutura define a profundidade.
Em key: value, os dois-pontos seguidos de espaço separam chave e valor. key:value pode ser lido como uma string. Use aspas quando quiser evitar a interpretação especial de caracteres, números ou booleanos.
YAML 1.1 trata yes, no, on e off como booleanos; YAML 1.2 e diferentes parsers podem divergir. --- separa documentos, como recursos Kubernetes. Verifique o arquivo no formatador YAML e depois no sistema de destino.
Tabs invisíveis e elementos desalinhados podem causar erros ou mudar a estrutura. Ative a exibição de espaços no editor. Profundidades diferentes não são proibidas por si só: a hierarquia pretendida é o que importa.
Tipos implícitos dependem da versão e do esquema. Zeros iniciais são delicados: 0644 pode ser interpretado como octal nas regras do YAML 1.1. Coloque aspas em identificadores e versões que precisam continuar como texto, sem presumir o comportamento de outro parser.
Âncoras &name e aliases *name reutilizam valores, mas o suporte varia no destino. Confira o resultado expandido em YAML para JSON. JSON não conserva comentários nem sintaxe de aliases; parte da apresentação original será perdida.
TOML foi criado para configurações editadas por pessoas. Usa pares chave-valor e seções como [package], [dependencies] e [dev-dependencies]. Cargo do Rust e pyproject.toml do Python são exemplos; a PEP 518 escolheu TOML em 2016 para requisitos de build Python.
[[table]] inicia um item de um array de tabelas. Strings, inteiros, floats, booleanos, datas e horas, arrays e tabelas inline têm sintaxe definida. port = 8080 é número, enquanto port = "8080" é texto. TOML não possui tipo null.
Comentários começam com # fora das strings. Confira a versão e as funcionalidades do parser, principalmente strings multilinha e datas. O formatador TOML ajuda na revisão, mas o arquivo também deve ser aceito pelo programa de destino.
Use YAML quando a plataforma exigir, como Kubernetes, Helm ou Ansible. Comentários e aliases ajudam, mas exigem cuidado com tipos e estrutura. TOML combina com configurações organizadas que pessoas editam com frequência.
JSON oferece regras estritas e amplo suporte em APIs e package.json. O padrão não admite comentários; uma aplicação aceitar JSON com comentários não muda a especificação.
JSON para YAML, JSON para TOML, YAML para JSON e TOML para JSON convertem localmente. Revise null, datas, números e arrays aninhados. Comentários, formatação e informações especiais de tipo não são preservados automaticamente.
A causa mais comum é a indentação com tabulação em vez de espaços. Alguns editores inserem tabulações silenciosamente. Passe seu YAML pelo nosso Formatador YAML para normalizar os espaços em branco antes de fazer o commit.
Sim. Um # interpretado como comentário fora de strings faz o restante da linha ser ignorado. Um # dentro de uma string faz parte do valor e deve ser preservado.
TOML 1.0, lançado em 2021, esclareceu sintaxe e detalhes de strings multilinha, chaves e datas. Confira a versão e os recursos aceitos pelo parser e valide o arquivo no programa de destino.
Use nosso Conversor de YAML para JSON. Cole seu manifesto e clique em Converter. A saída é um JSON válido que o kubectl e a maioria dos clientes Kubernetes aceitam.
A comunidade de empacotamento do Python escolheu o TOML porque ele suporta comentários (ao contrário do JSON), é inequívoco (ao contrário dos tipos implícitos do YAML) e é amigável para humanos. A PEP 518 (2016) especificou o TOML para essa finalidade.