Conversor de JSON para YAML

Converta entre JSON e YAML mantendo a ordem das chaves

Converta JSON em YAML e de volta, com a ordem das chaves preservadaDetecção automática
Entrada JSON
Saída YAML

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

  1. Cole seu JSON no painel de entrada. O resultado em YAML aparece na hora, sem precisar apertar botão.
  2. 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.
  3. 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.
  4. 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.