Conversor de JSON para YAML online
O conversor de JSON para YAML reescreve um JSON no formato YAML, mais enxuto e fácil de ler, usado em arquivos de configuração como os do Kubernetes, do Docker Compose e do GitHub Actions. Você escolhe a indentação e copia ou baixa o resultado. A conversão é feita no seu navegador, sem enviar os dados a nenhum servidor.
A conversão é feita no seu navegador. Os dados e os arquivos não são enviados a nenhum servidor.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Cole o JSON no campo da esquerda, ou clique em Abrir arquivo.
- Escolha a indentação, de 2 ou 4 espaços.
- Clique em Copiar resultado ou em Baixar arquivo.
Como funciona
O YAML 1.2 é quase um superconjunto do JSON, então todo JSON pode ser escrito em YAML sem perder informação. Objetos viram pares chave: valor, listas viram itens com hífen e as chaves e os textos dispensam as aspas quando isso não gera ambiguidade.
Textos que poderiam ser lidos como outro tipo ganham aspas. Por exemplo, "123", "true", "null", "yes", "no" e "on" ficam entre aspas, para que o YAML continue lendo texto e não um número ou um booleano, inclusive em bibliotecas mais antigas que seguem o YAML 1.1.
Os textos longos não são quebrados em várias linhas, e textos com quebras de linha usam o bloco literal do YAML (o símbolo | seguido das linhas indentadas), o que preserva o conteúdo exato. O JSON não tem comentários, então o YAML gerado também não terá.
Exemplo
JSON: {"nome":"PraDev","porta":8080,"tags":["dev","grátis"]}
YAML:
nome: PraDev
porta: 8080
tags:
- dev
- grátis
Fonte: YAML 1.2: especificação oficial; RFC 8259: o formato JSON
Em código
Para converter entre YAML e JSON em código, atenção à versão do YAML: o PyYAML segue o 1.1 e lê no como false. Em Python, use sempre safe_load.
import { parse, stringify } from 'yaml'; // npm install yaml
// O pacote yaml segue o YAML 1.2: no, yes e on continuam sendo texto
function yamlParaJson(texto) {
return JSON.stringify(parse(texto), null, 2);
}
// version '1.1' põe aspas em no, yes, 12:30 e parecidos, para que leitores
// antigos (como o PyYAML) também leiam texto como texto
function jsonParaYaml(texto) {
return stringify(JSON.parse(texto), { version: '1.1' });
} Precisa do pacote yaml (npm install yaml).
import json
import yaml # pip install pyyaml
def yaml_para_json(texto: str) -> str:
# safe_load: o yaml.load comum pode criar objetos Python a partir do texto
dados = yaml.safe_load(texto)
# default=str: o PyYAML transforma 2026-01-01 em date, que o JSON não conhece
return json.dumps(dados, indent=2, ensure_ascii=False, default=str)
def json_para_yaml(texto: str) -> str:
return yaml.safe_dump(json.loads(texto), allow_unicode=True, sort_keys=False) Precisa do PyYAML (pip install pyyaml).
Perguntas frequentes
Todo JSON pode virar YAML sem perder dados?
Sim. O YAML 1.2 foi feito para aceitar JSON válido. A conversão guarda todos os valores, inclusive textos que parecem números ou booleanos, colocando aspas neles.
Por que "yes" e "no" aparecem entre aspas?
Porque em YAML 1.1, usado por bibliotecas como PyYAML e Ruby, yes e no sem aspas são lidos como verdadeiro e falso. As aspas garantem que o valor continue sendo texto em qualquer leitor.
O YAML aceita tabulação para indentar?
Não. A indentação do YAML é sempre com espaços. Usar tabulação é um dos erros mais comuns ao editar YAML à mão.
Posso voltar do YAML para o JSON?
Sim, com o conversor de YAML para JSON do PraDev. Só lembre que comentários do YAML não existem em JSON e se perdem nessa volta.
Outras ferramentas que podem ajudar
- Conversor YAML para JSONConverta YAML em JSON online e veja a linha e a coluna do erro
- Formatador JSONFormate, indente, minifique e valide JSON online
- Validador JSONValide JSON online e veja a linha e a coluna do erro, o tipo e a profundidade
- Conversor de Timestamp UnixConverta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp
- Testador de RegexTeste expressões regulares online: destaque dos casamentos, grupos e flags
- Comparador JSONCompare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada