Conversor de JSON para YAML e YAML para JSON

Converta JSON em YAML e YAML em JSON online, nos dois sentidos. Mostra a linha do erro, avisa sobre âncoras e sobre yes/no e roda só no seu navegador.

Converter JSON em YAML (e YAML em JSON)

Cole o conteúdo de um lado e o resultado aparece do outro enquanto você digita. O botão Inverter troca o sentido e leva o resultado para a entrada. Nada é enviado a servidor: a conversão acontece no seu navegador, o que importa quando o arquivo tem senhas, tokens ou endereços internos.

A conversão é feita no seu navegador: nada é enviado.

Como usar

  1. Escolha o sentido: JSON → YAML ou YAML → JSON.
  2. Cole o texto, clique em Abrir arquivo (.json, .yaml, .yml) ou carregue o Exemplo.
  3. Ajuste as opções: indentação de 2 ou 4 espaços, JSON minificado, chaves em ordem alfabética.
  4. Copie o resultado ou baixe o arquivo.

Se a entrada tiver erro, a mensagem indica a linha e a coluna, e o botão Ir para a linha seleciona o trecho.

JSON e YAML representam os mesmos dados

Os dois formatos descrevem a mesma coisa: mapas (objetos), listas, textos, números, booleanos e nulo. O que muda é a escrita. O JSON usa chaves, colchetes e aspas; o YAML usa indentação e dispensa quase toda a pontuação.

{ "servico": { "nome": "api", "portas": [80, 443], "ativo": true } }
servico:
  nome: api
  portas:
    - 80
    - 443
  ativo: true

Desde a versão 1.2 (de 2009), o YAML foi desenhado para aceitar JSON como subconjunto: um arquivo JSON válido pode ser lido por um analisador de YAML 1.2. O contrário não vale, porque o YAML tem recursos sem equivalente em JSON.

O que se perde de YAML para JSON

  • Comentários. JSON não tem comentários; as linhas com # desaparecem.
  • Âncoras e aliases. Em YAML, &nome marca um trecho e *nome o reutiliza. No JSON, cada alias vira uma cópia completa do valor, e a ferramenta avisa quando isso acontece. O mesmo vale para a chave de mesclagem <<, muito usada em arquivos do Docker Compose.
  • Vários documentos. Um arquivo YAML pode ter vários documentos separados por --- (comum em manifestos do Kubernetes). O resultado vira uma lista JSON com um item por documento.
  • Chaves que não são texto. 1: um é uma chave numérica em YAML; em JSON ela passa a ser "1".
  • Infinito e NaN. .inf e .nan não existem em JSON e viram null, com aviso.

O “problema da Noruega”: yes, no, on e off

Na versão 1.1 do YAML, as palavras yes, no, on e off sem aspas eram booleanos. Daí o caso clássico: numa lista de siglas de países, NO (Noruega) virava false. A versão 1.2 acabou com isso — só true e false são booleanos —, mas muitas bibliotecas ainda seguem a regra antiga, entre elas a PyYAML, do Python.

Este conversor segue o YAML 1.2, então pais: NO vira "pais": "NO". Para evitar surpresas, ele faz duas coisas:

  • Ao ler YAML, avisa quando encontra essas palavras sem aspas e oferece a opção Ler como YAML 1.1, que reproduz o comportamento antigo (NO vira false, 22:22 vira o número 1342 em base 60, 010 vira 8 em octal).
  • Ao gerar YAML, coloca entre aspas os textos que um analisador antigo leria como outro tipo: "no", "on", "12:30", "2024-01-02". Assim o arquivo é lido do mesmo jeito em qualquer programa. Dá para desligar em Aspas em textos ambíguos.

Erros comuns em YAML

  • Tab na indentação. YAML só aceita espaços para indentar.
  • Indentação desalinhada. Chaves do mesmo nível precisam começar na mesma coluna.
  • Dois-pontos dentro do texto. titulo: Aviso: leia é inválido; escreva titulo: "Aviso: leia".
  • Chave repetida no mesmo mapa. Alguns programas ficam com a última em silêncio; aqui é erro, assim como no JSON de entrada.
  • Barra invertida entre aspas duplas, como em "C:\pasta". Use aspas simples.

Números grandes e ordem das chaves

Inteiros acima de 2^53 (9.007.199.254.740.992), como IDs de 64 bits, passam pela conversão dígito por dígito, sem o arredondamento que o JSON.parse do JavaScript faria. A ordem das chaves do arquivo é mantida, inclusive a de chaves numéricas como "10" e "2". Números decimais continuam sujeitos à precisão de ponto flutuante: 1.0 sai como 1.

Limites

A entrada aceita até 2 milhões de caracteres. Tags personalizadas (como !Ref do CloudFormation) são descartadas, com aviso, e o valor é mantido. Chaves complexas — uma lista ou um mapa usado como chave — não têm representação em JSON e geram erro.

Perguntas frequentes

YAML é melhor que JSON? Depende do uso. YAML é mais confortável para arquivos escritos por pessoas (configuração, pipelines de CI). JSON é mais simples, sem ambiguidade, e é o padrão para troca de dados entre programas.

Posso converter o arquivo do Kubernetes ou do Docker Compose? Sim. Manifestos com vários documentos viram uma lista, e âncoras e mesclagens (<<) são expandidas.

Os comentários do YAML vão para o JSON? Não, porque JSON não tem comentários. Para reorganizar um YAML sem perder comentários, use o visualizador e formatador de YAML.

Por que meu texto saiu entre aspas no YAML? Porque sem aspas ele seria lido como outro tipo: "123" seria número, "true" seria booleano e "no" seria false em programas antigos.

Meu arquivo é enviado para algum servidor? Não. Tudo roda no navegador, e a página funciona até sem conexão depois de carregada.

Ferramentas relacionadas