FreeToGenerate.com

100% grátis · sem registo · nada é enviado

Ainda não há nada para mostrar. Cola o teu código ou carrega um exemplo para começar.

Tudo é processado no teu navegador — nada é enviado para servidor nenhum.

Também disponível em: English · Español · Français · العربية

Conversor de JSON para YAML (e de YAML para JSON)

Cola o teu JSON ou YAML e recebe o resultado no outro formato, com avisos claros sobre o que se perde na conversão.

O que é um conversor de JSON para YAML?

Um conversor de JSON para YAML pega num documento JSON e reescreve-o na sintaxe YAML, mais legível e sem chavetas nem vírgulas — o formato preferido pelos ficheiros de configuração. Esta ferramenta funciona também no sentido inverso, de YAML para JSON, porque na prática é frequente precisar das duas conversões: uma API devolve JSON e um ficheiro de configuração usa YAML, ou o contrário.

Como qualquer JSON válido já é YAML válido, a direção YAML → JSON também aceita JSON como entrada — não precisas de te preocupar em escolher mal a direção só porque colaste o formato errado.

Como usar o conversor

  1. Escolhe a direção: seleciona «JSON → YAML» ou «YAML → JSON» consoante o que tens e o que precisas.
  2. Cola o teu código: escreve ou cola o conteúdo na caixa de entrada. Se preferires testar sem ter nada à mão, usa o botão «Carregar um exemplo». Qualquer erro de sintaxe aparece de imediato, identificado pela linha e pela coluna.
  3. Ajusta a indentação e copia: escolhe entre 2 ou 4 espaços (e, ao converter para JSON, também Tab ou Minificar), confere os avisos sobre o que se perde na conversão e clica em «Copiar».

O que sobrevive à conversão e o que não

O YAML tem uma armadilha conhecida como «problema da Noruega»: em versões antigas da especificação (YAML 1.1), a palavra solta NO — o código de país da Noruega — era interpretada como o booleano falso, o que já causou erros reais em ficheiros de configuração. Este conversor usa o esquema core do YAML 1.2, onde isso não acontece: country: NO continua a ser a cadeia de texto «NO». O mesmo vale para yes, no, on e off, que continuam texto; só true e false, em qualquer combinação de maiúsculas e minúsculas, são lidos como booleanos. Pela mesma razão, 12:30 não se transforma no número 750 (uma leitura em base 60 que o YAML 1.1 fazia) nem 2024-01-15 se transforma numa data — ambos continuam texto.

Os números, esses, perdem a forma exata como foram escritos, porque um número em YAML passa a ser um número normal, e um número normal não guarda memória de zeros à esquerda ou à direita: 1.10 sai como 1.1 e 0123 sai como 123. Isto pesa mais do que parece em números de versão — se precisares de manter «1.10» exatamente assim, escreve-o entre aspas na origem.

Os inteiros muito grandes têm um problema mais sério, e que acontece nos dois sentidos: acima de cerca de 9 mil biliões (253) deixam de ser representáveis com exatidão, e um valor como 12345678901234567890 sai como 12345678901234567000 — silenciosamente, na maioria dos conversores. Este identifica exatamente onde isso acontece: aponta a chave exata, por exemplo rows[0].id, com o valor original e o valor que resultou, para que o problema não passe despercebido.

Os comentários do YAML não têm equivalente em JSON, por isso desaparecem na conversão — a ferramenta avisa quando isso acontece, e sabe distinguir os casos que não são comentários: um # dentro de texto entre aspas, ou um #!/bin/sh dentro de um bloco literal, são conteúdo e não comentário. O mesmo se passa com âncoras e aliases, a forma do YAML de definir &um_bloco uma vez e reutilizá-lo com *um_bloco: o JSON não tem esse conceito, por isso o conteúdo é duplicado em cada sítio onde era referenciado, e a ligação entre as cópias perde-se — outro aviso que aparece no painel.

Há ainda três entradas que são recusadas em vez de adivinhadas: um ficheiro YAML com vários documentos separados por --- (comum em manifestos do Kubernetes), que não tem equivalente direto em JSON e deve ser convertido um documento de cada vez; uma chave repetida, assinalada com o número da linha em vez de ficar silenciosamente com o último valor; e a indentação com tabulações, que a especificação do YAML não permite.

Quando é que esta conversão é mesmo precisa

Aparece com frequência em ficheiros de configuração de aplicações, em pipelines de integração contínua (GitHub Actions, GitLab CI), em manifestos do Kubernetes e em ficheiros docker-compose.yml — todos escritos em YAML, mas gerados ou consumidos, muitas vezes, a partir de dados em JSON. O caminho inverso é igualmente comum: uma especificação OpenAPI escrita em YAML por ser mais legível, mas que uma ferramenta ou biblioteca só aceita em JSON.

Porque é gratuito?

Porque a conversão acontece inteiramente no teu navegador — não há nenhum ficheiro a viajar até um servidor, por isso não há custo nenhum em servir esta página. Não é preciso criar conta, não é preciso carregar nada, e o resultado não leva marca de água nenhuma.