YamlBox

YAML ferramentas · 5 min de leitura

JSON a YAML: tornando a saída da máquina legível novamente

JSON é excelente no fio e desagradável em pull request. Quando uma resposta API, um fragmento de estado do Terraform ou um manifesto de pacote precisa se tornar algo que um ser humano revisa linha por linha, uma conversão JSON para YAML é a resposta usual — e os detalhes de como essa conversão, citações e recuos decidem se o resultado permanecerá legível seis meses depois.

Atualizado

Por que converter JSON em YAML

Os dois formatos contêm dados idênticos, mas são otimizados para leitores diferentes. JSON gasta caracteres entre colchetes, vírgulas e aspas; YAML gasta-os na estrutura que o olho pode seguir como recuo. Para dados gerados e consumidos por programas, JSON vence. Para dados que uma pessoa edita — Helm valores, definições de CI, inventários Ansible, Docker arquivos de composição — YAML ganha, e é por isso que essa direção surge sempre que os dados gerados precisam de um proprietário humano.

Comentários são a única coisa que não pode sobreviver

A conversão pode restaurar a legibilidade, mas não pode restaurar a intenção: a fonte JSON não tinha comentários para transferir. Se o YAML gerado for mantido por pessoas, adicione um pequeno comentário no cabeçalho descrevendo de onde ele veio e o que o regenera, para que ninguém edite um arquivo que será sobrescrito na próxima implantação.

Citando: onde convertido YAML quebra silenciosamente

YAML trata diversas palavras simples como valores em vez de strings. Um conversor que descarta aspas agressivamente pode alterar os tipos sem alterar um único caractere visível:

                country: NO        # parses as boolean false in YAML 1.1
version: 1.10      # parses as the number 1.1
time: 22:30        # parses as a sexagesimal integer
name: "on"         # quoted on purpose — must stay a string
              

Uma boa saída cita qualquer string que possa ser mal interpretada — `yes`/`no`/`on`/`off`, identificadores de aparência numérica, valores com zeros à esquerda, horas e datas — em vez de citar tudo, o que produz a parede de pontuação da qual você estava tentando escapar.

Recuo e strings multilinhas

Dois espaços é o padrão seguro: é o que a documentação Kubernetes, os modelos Helm e a maioria dos editores assumem, e sobrevive ao copiar e colar entre as ferramentas. O aninhamento profundo no estilo de quatro espaços é difícil de digitalizar além de seis níveis. Strings longas são a outra decisão de formatação — um valor JSON com novas linhas incorporadas pode sair como uma linha de escape ou como um escalar de bloco YAML que lê naturalmente. Se o campo for um script de shell ou um snippet de configuração, solicite o formulário de bloco.

A classificação de chaves torna as diferenças significativas

A ordem da chave do objeto JSON não é significativa, então os conversores são livres para reordenar. A classificação das chaves em ordem alfabética faz com que os arquivos regenerados sejam diferenciados de maneira limpa: sem isso, uma ordem de implantação alterada aparece como uma reescrita de arquivo inteiro. Se você estiver rastreando YAML gerado no git, a classificação é a diferença entre uma diferença de uma linha e uma de duzentas linhas.

Mantenha a viagem de ida e volta em um só lugar

Como as duas direções são inversas, vale a pena ter ambas na mesma ferramenta para que você possa converter, editar e converter novamente sem mudar de contexto ou colar sua configuração em três serviços diferentes. O conversor baseado em navegador neste site emparelha com a ferramenta YAML para JSON, funciona offline e nunca carrega a carga útil – o que é importante quando o JSON em questão é uma resposta de produção API.

JSON a YAML — perguntas frequentes

O YAML convertido manterá a ordem das minhas chaves?

Os conversores podem classificar chaves ou preservar a ordem de inserção. A classificação geralmente é a melhor escolha para arquivos rastreados no git porque a regeneração produz diferenças mínimas e estáveis; preservar a ordem original quando a própria ordem for significativa para os leitores.

Por que um valor mudou de tipo após uma conversão de JSON para YAML?

Escalares simples em YAML são reinterpretados: `no`, `on` e `off` podem se tornar booleanos, e valores como `1.10` podem se tornar números. Um conversor seguro cita strings que de outra forma seriam mal interpretadas. Se um campo deve permanecer uma string, coloque-o explicitamente entre YAML.

Posso converter JSON em YAML off-line?

Sim — a conversão é uma análise local e re-serialização sem nenhum servidor envolvido, então a ferramenta continua funcionando com a rede desconectada e seus dados nunca saem da aba do navegador.

Ferramentas mencionadas nesta postagem

Navegue pela lista completa de 19 ferramentas

Mais artigos para ler

Todas as 19 postagens →