Conversor JSON ↔ YAML

RSS

Converta JSON para YAML ou YAML para JSON com um clique, para Kubernetes, Docker Compose, pipelines de CI e especificações OpenAPI.

Funciona 100% no seu navegador. Nada do que você cola é enviado ou armazenado.
Entrada JSON ou YAML
Resultado
Pronto.

Como usar o conversor JSON ↔ YAML

  1. Escolha a direção: JSON → YAML ou YAML → JSON.
  2. Cole o documento na caixa de entrada ou digite diretamente.
  3. A saída convertida aparece na hora. Se a entrada for inválida, a mensagem de erro aponta a linha que não pôde ser lida.
  4. Copie o resultado para o seu manifesto, arquivo de pipeline ou cliente de API.

A conversão roda inteiramente no seu navegador, então arquivos de configuração com nomes de host internos ou credenciais nunca são enviados nem armazenados nos nossos servidores.

JSON e YAML: os mesmos dados, duas notações

JSON (JavaScript Object Notation) e YAML (YAML Ain't Markup Language) descrevem as mesmas estruturas básicas: mapeamentos (objetos com pares chave–valor), sequências (arrays) e escalares (strings, números, booleanos e nulo). Desde o YAML 1.2, todo documento JSON válido também é YAML válido, e por isso converter JSON em YAML não perde nada. O caminho inverso também costuma ser sem perdas, mas o YAML tem recursos que o JSON não tem, como comentários, âncoras e strings de bloco com várias linhas, e eles são achatados ou descartados quando você gera JSON.

Desenvolvedores convertem entre os dois o tempo todo:

  • Os manifestos do Kubernetes normalmente são escritos em YAML, enquanto o kubectl get -o json e a própria API falam JSON.
  • Os arquivos do Docker Compose (compose.yaml) são YAML; converter para JSON ajuda ao gerá-los por scripts.
  • O GitHub Actions e a maioria dos sistemas de CI definem os fluxos de trabalho em YAML.
  • As especificações OpenAPI podem ser escritas em qualquer um dos formatos, e muitas ferramentas aceitam os dois.

Aqui está o mesmo objeto nas duas notações:

{"service": "web", "replicas": 3, "ports": [80, 443], "debug": false}
service: web
replicas: 3
ports:
  - 80
  - 443
debug: false

Armadilhas comuns do YAML

O “problema da Noruega”

O YAML 1.1 trata yes, no, on, off, y e n sem aspas (em várias combinações de maiúsculas e minúsculas) como booleanos. Uma lista de códigos de países, portanto, transforma a Noruega em false nos parsers que seguem o YAML 1.1:

countries:
  - GB
  - NO     # YAML 1.1: false   YAML 1.2 core schema: "NO"
  - SE

O YAML 1.2 restringe os booleanos a true e false, mas muitas bibliotecas muito usadas ainda adotam por padrão o comportamento do 1.1. O hábito seguro é colocar entre aspas qualquer string que possa ser confundida com outro tipo: "NO", "on", "1.10", "0755". Números de versão são uma armadilha clássica: 1.10 sem aspas vira o número 1.1.

Indentação

O YAML usa a indentação para expressar o aninhamento, e tabulações não são permitidas na indentação. Um único espaço desalinhado muda a estrutura ou quebra a leitura:

spec:
  containers:
    - name: app
      image: nginx
     ports:          # um espaço a menos: erro de leitura
        - containerPort: 80

Âncoras e aliases

O YAML permite definir um bloco uma vez com &nome e reutilizá-lo com *nome, muitas vezes combinado com a chave de mesclagem <<. O JSON não tem equivalente, então o conversor expande cada alias em uma cópia completa:

defaults: &defaults
  restart: always
  logging: json
web:
  <<: *defaults
  image: nginx

Observe que a chave de mesclagem é uma extensão do YAML 1.1; nem todo parser a suporta.

Dicas para conversões limpas

  • Os comentários (# ...) são descartados ao converter YAML em JSON, porque o JSON não tem sintaxe de comentário. Mantenha o arquivo YAML como fonte da verdade se os comentários importarem.
  • Strings de bloco com várias linhas (| mantém as quebras de linha, > as transforma em espaços) viram strings comuns com escapes \n no JSON.
  • Inteiros grandes além de 253 podem perder precisão em ferramentas baseadas em JavaScript. Coloque entre aspas os IDs que precisam permanecer exatos.
  • Para refinar mais o resultado, passe-o pelo Formatador e validador de JSON ou pelo Formatador e validador de YAML.
Dica: Um arquivo pode conter vários documentos YAML separados por ---, como acontece nos pacotes do Kubernetes. O JSON não tem esse conceito, então divida os arquivos com vários documentos antes de converter, ou espere apenas um documento na saída.

Perguntas frequentes

Todo arquivo JSON é um YAML válido?

No YAML 1.2, sim: ele foi projetado como um superconjunto do JSON. Você pode passar JSON direto para a maioria dos parsers de YAML. Converter para YAML em estilo de bloco apenas o deixa mais fácil de ler e editar.

Por que o tipo do meu valor YAML mudou depois da conversão?

Escalares sem aspas são resolvidos pelo parser. Valores como no, off, 1e3, 0x1F ou 2024-01-01 podem virar booleanos, números ou datas, dependendo da versão do YAML e da biblioteca. Coloque-os entre aspas para mantê-los como strings.

Posso usar tabulações no YAML?

Não. A especificação do YAML proíbe caracteres de tabulação na indentação. Use espaços, normalmente dois por nível, e configure o seu editor para inserir espaços automaticamente.

Os comentários são mantidos numa conversão de ida e volta?

Não. Os comentários desaparecem assim que o YAML é transformado em JSON e não podem ser recuperados na conversão de volta. Mantenha os comentários no arquivo YAML original.

Atualizado

Copiado para a área de transferência