Conversor JSON ↔ YAML
JSONConversão bidirecional entre JSON e YAML 1.2 com validação ao vivo e localização de erro por linha/coluna.
URLs remotas não são buscadas; cole seu JSON diretamente.
Nesta página
O que é um conversor YAML / JSON?#
YAML e JSON são duas formas de escrever o mesmo tipo de dados — mapas aninhados, listas, strings, números, booleanos e null. O JSON é estrito e rico em pontuação (todas as strings em aspas duplas, parêntesis em todo o lado); o YAML troca essas aspas e chavetas por indentação e hífens, o que o torna suficientemente legível para os humanos o escreverem à mão em arquivos de configuração, pipelines de CI e manifestos de contentores.
Há sempre necessidade de alternar entre os dois porque ferramentas diferentes preferem formatos diferentes. Um chart Kubernetes é escrito em YAML mas a API fala JSON. Uma configuração de CI é YAML; o linter a que o quer entregar espera JSON. Um colega cola um bloco YAML num chat; o seu script quer JSON.parse. Fazer isto à mão — re-indentar, re-pôr aspas, trocar hífens por parêntesis — é precisamente o tipo de trabalho meticuloso que introduz uma vírgula perdida ou um espaço desalinhado, e depois nada analisa.
Esta página converte em ambas as direções no seu navegador. YAML para JSON quando precisa do rigor amigo das máquinas; JSON para YAML quando quer um arquivo de configuração que um humano consiga realmente ler. Analisa com o esquema core do YAML 1.2 (sem instanciação arriscada de objetos), fixa os erros numa linha e coluna exatas, e recusa-se a quebrar linhas longas para que a saída se mantenha amigável a diffs.
Como usar#
- Escolha uma direção no interruptor de dois botões no canto superior esquerdo da barra de ferramentas:
- YAML → JSON (predefinição): cole YAML à esquerda, obtenha JSON estrito à direita.
- JSON → YAML: cole JSON à esquerda, obtenha YAML indentado à direita.
- Escolha a Indentação — 2 ou 4 espaços. Isto controla a profundidade de aninhamento da saída em ambos os lados.
- Clique em Exemplo para carregar um pequeno exemplo se quiser ver o comportamento antes de colar os seus próprios dados, ou Limpar para esvaziar ambos os painéis.
- O painel da direita atualiza-se à medida que a conversão decorre. A barra de estado por baixo indica uma de três coisas: uma linha de sucesso com o tamanho da saída em bytes, uma pista de entrada vazia, ou um erro de análise com linha e coluna (base 1) a apontar para o token ofensor exato.
- Clique em Copiar no cabeçalho da saída para recolher o resultado.
A conversão decorre no momento em que a entrada analisa. Não há botão Gerar para clicar — corrija a entrada e a saída atualiza-se.
Principais funcionalidades#
- Bidirecional, um par de painéis. O mesmo esquema de entrada/saída trata ambas as direções; o interruptor decide que analisador corre.
- Esquema core do YAML 1.2.
null,true/false, inteiros, vírgulas flutuantes e strings entre aspas resolvem-se exatamente como um analisador compatível com o padrão os resolve — não como uma heurística frouxa. - Quebra de linha desativada. Linhas longas de saída nunca são quebradas nem suprimidas, pelo que um diff contra um arquivo em repositório mostra apenas alterações reais.
- Localização exata do erro. Uma indentação desalinhada ou um
:perdido é reportado comolinha:col, não como um “não foi possível analisar” genérico. - Protegido contra profundidade. Entradas profundamente aninhadas (a clássica expansão “YAML billion-laughs”) são limitadas, pelo que um arquivo hostil ou acidentalmente recursivo não consegue congelar o separador.
- Apenas local. A sua configuração nunca sai da página — não há backend para a enviar. Passado um megabyte, a análise pesada vai para um Web Worker em segundo plano para a interface se manter responsiva.
Exemplo prático#
Uma tarefa real comum: uma configuração de serviço escrita em YAML precisa de ir num corpo de pedido JSON. Cole isto no painel da esquerda com YAML → JSON e indentação 2:
name: api-gateway
port: 8080
reaspas simples: 3
targets:
- host: example.com
port: 443
- host: cdn.example.com
port: 8443
features:
retries: true
timeout_ms: 2500
O painel da direita produz JSON estrito, pronto a analisar:
{
"name": "api-gateway",
"port": 8080,
"reaspas simples": 3,
"targets": [
{
"host": "example.com",
"port": 443
},
{
"host": "cdn.example.com",
"port": 8443
}
],
"features": {
"retries": true,
"timeout_ms": 2500
}
}
Repare que os valores YAML sem aspas 8080, true e 3 tornaram-se respetivamente um número, um booleano e um número JSON — o esquema core tipificou-os, não teve de o fazer. Inverta a direção (JSON → YAML) e cole o JSON de volta: obtém a mesma estrutura aninhada re-indentada com hífens para os itens de lista, que é a forma que submeteria num repositório de configuração.
FAQ#
Os meus comentários YAML são preservados na viagem de ida e volta?#
Não. O JSON não tem qualquer sintaxe de comentários, pelo que qualquer # comentário no seu YAML é lido e depois descartado a caminho do JSON — simplesmente não há onde o colocar. Os comentários são tolerados na entrada (nunca causam erro), mas não podem sobreviver à travessia. Se os comentários importam, mantenha o YAML como fonte de verdade e gere JSON a partir dele cada vez.
Lida com YAML multidocumento (arquivos separados por ---)?#
Processa o fluxo de documentos e devolve o documento principal. A maioria dos arquivos de configuração e manifesto é de documento único, pelo que raramente é um problema; se tem um fluxo multidocumento, separe-o nos separadores --- e converta cada parte.
YAML ou JSON para o meu arquivo de configuração — qual devo escolher?#
Use YAML quando um humano o edita à mão e quer legibilidade com âncoras e aninhamento por indentação. Use JSON quando uma máquina o produz e um analisador o consome, ou quando o rigor importa (o JSON tem exatamente uma forma legal de escrever cada valor, pelo que não há ambiguidade para depurar). Esta ferramenta existe para não ter de se comprometer com apenas um.
O erro diz “linha 4, col 5” mas essa linha parece estar bem. O que está mal?#
Quase sempre indentação. O YAML decide a estrutura a partir dos espaços à esquerda, pelo que um filho que esteja um espaço demasiado à esquerda ou à direita — ou tabs e espaços misturados — surge como erro na linha depois do verdadeiro culpado, porque o analisador só dá pela inconsistência ao ler o token seguinte. Verifique primeiro a indentação da linha acima da indicada.