Guia da ferramenta
Sobre Conversor de JSON para YAML
Este conversor transforma JSON em YAML e YAML de volta em JSON, para que a mesma configuração transite entre um payload de API e um manifesto do Kubernetes, um arquivo do Docker Compose, um workflow do GitHub Actions ou um documento OpenAPI sem precisar redigitar nada.
A conversão acontece conforme você digita, a ordem das chaves é preservada exatamente como foi escrita e a indentação pode ser de 2 ou 4 espaços. Erros de sintaxe apontam a linha e a coluna exatas.
Como converter JSON to YAML
- Cole seu JSON no painel de entrada. O resultado em YAML aparece na hora, sem precisar apertar botão.
- Use o botão de direção para passar a YAML em JSON, por exemplo para alimentar um script que só lê JSON com um manifesto.
- Escolha indentação de 2 ou 4 espaços conforme o padrão do seu repositório. Arquivos de Kubernetes e GitHub Actions costumam usar 2.
- Se a entrada for inválida, leia a linha e a coluna informadas, corrija aquele ponto e a saída se atualiza sozinha.
Quando usar
- Transformar um recurso em JSON despejado pelo kubectl em um manifesto YAML legível que dá para versionar.
- Converter um bloco de serviço do Docker Compose enquanto testa uma configuração gerada.
- Levar uma especificação OpenAPI de uma forma para a outra, já que as ferramentas de cada lado preferem um dos formatos.
- Reescrever em YAML um trecho de workflow do GitHub Actions que foi produzido em JSON, que é o formato esperado pelo runner.
Regras do YAML que quebram conversões
O YAML 1.2 é quase um superconjunto do JSON, então JSON válido normalmente é YAML válido. Os problemas aparecem no sentido contrário, quando o YAML adivinha tipos que o JSON nunca adivinharia.
- O problema da Noruega: NO, no, yes, on e off são lidos como booleanos por parsers de YAML 1.1, então o código de país NO vira false. Coloque esses valores entre aspas.
- Zeros à esquerda: um valor como 010 pode ser lido como número octal em vez de texto. Use aspas em identificadores, CEPs e códigos de peça.
- Números de versão: um 1.10 sem aspas vira o float 1.1 e o zero final desaparece.
- A indentação precisa usar espaços, nunca tabulação, e todo dois-pontos que introduz um valor exige um espaço depois dele.
Perguntas frequentes sobre JSON para YAML
- O conversor reordena minhas chaves?
- Não. As chaves saem na ordem em que você as forneceu, o que mantém os diffs pequenos no controle de versão.
- O que acontece com meus comentários?
- O JSON não tem sintaxe de comentário, então a conversão de JSON para YAML não pode inventar comentários, e a de YAML para JSON descarta os que existiam na origem. Guarde o original se os comentários forem importantes.
- A saída vai conter âncoras e aliases?
- Não. Estruturas repetidas são escritas por extenso, então qualquer parser consegue ler o resultado sem suporte a aliases.
- Minha configuração é enviada para algum lugar?
- Não. A análise e a conversão acontecem no seu navegador usando js-yaml, então nada do que você cola sai da sua máquina nem fica armazenado por wetool.site.
- Por que um valor YAML muda de tipo depois da conversão?
- O YAML adivinha tipos para escalares sem aspas. Coloque o valor entre aspas na origem YAML e ele será convertido como string JSON.
JSON comparado com YAML
O JSON é rígido e sem ambiguidade, o que o torna um bom formato de transporte, mas não tem comentários e fica poluído quando o aninhamento é profundo. O YAML se lê melhor em revisão, ao custo de adivinhação de tipos e de sensibilidade à indentação. A maioria dos times mantém a configuração em YAML e troca JSON nas fronteiras, e é exatamente para isso que serve esta conversão nos dois sentidos.
Checklist de aspas antes de commitar
A maior parte das implantações quebradas por uma conversão vem de um valor que perdeu o tipo. Revise a saída YAML procurando estes casos.
- Códigos de país e de idioma, especialmente NO, e qualquer valor de duas letras que se pareça com uma palavra.
- Números que na verdade são identificadores: números de conta, portas preenchidas com zeros, qualquer coisa com zero à esquerda.
- Versões e tags de imagem como 1.10 ou 3.20, que perdem o zero final quando tratadas como float.