Conversor JSON para YAML
Cole JSON e obtenha YAML instantaneamente. Conversão ao vivo no navegador. K8s/Compose, indentação 2/4 espaços, Norway-safe. 100% privado, sem upload.
Opções · 2 espaços · auto · block
O que é YAML e por que converter de JSON?
YAML (YAML Ain't Markup Language) é um formato de serialização de dados legível por humanos, projetado para arquivos de configuração, infraestrutura como código e em qualquer lugar onde um humano escreva dados que uma máquina vai ler. Sua sintaxe baseada em indentação não exige chaves ou colchetes, tornando-o muito mais legível que JSON para estruturas aninhadas complexas. Kubernetes, Helm, Ansible, Docker Compose, GitHub Actions, CircleCI e praticamente todas as ferramentas cloud-native usam YAML como formato de configuração primário. Converter JSON para YAML é, portanto, uma das tarefas mais comuns em DevOps e desenvolvimento backend — você recebe uma definição de recurso de uma API em JSON e precisa de um manifesto YAML para commitar no controle de versão.
Esta ferramenta tem quatro diferenciadores importantes em comparação com conversores online típicos:
**1. Problema Norway — Aspas Seguras Automáticas.** O maior risco em conversão de JSON para YAML é o problema Norway do YAML. No YAML 1.1 (que milhões de parsers em produção ainda usam, incluindo versões mais antigas do Kubernetes, PyYAML, Ansible e Psych do Ruby), as strings simples yes, no, on, off, y e n são analisadas como valores booleanos verdadeiro/falso. Isso afetou de forma famosa o código de país ISO da Noruega («NO» → falso) e causou interrupções reais em produção em configurações do Kubernetes. O YAML 1.2 corrigiu isso, mas seus parsers podem não estar na versão 1.2. O modo padrão de aspas Auto desta ferramenta usa a biblioteca eemeli/yaml com o esquema YAML 1.1, então ela automaticamente envolve qualquer string do problema Norway em aspas, garantindo round-trips seguros pelos parsers YAML 1.1 e 1.2. Saiba mais em nosso artigo complementar em O Problema Norway do YAML e Diferenças entre JSON e YAML.
**2. Preservação da Ordem das Chaves.** Diferentemente de alguns conversores que ordenam as chaves alfabeticamente, esta ferramenta preserva a ordem original de inserção das chaves do seu JSON — correspondendo ao comportamento de JSON.parse() em todos os motores JavaScript modernos. Isso importa para manifestos do Kubernetes (onde apiVersion e kind são esperados primeiro por convenção), especificações OpenAPI (onde info aparece antes de paths) e qualquer configuração onde a ordenação dos campos é significativa para legibilidade ou diffs.
**3. Aviso de Precisão de Números Grandes.** Números JSON maiores que 2^53 - 1 (9007199254740991) não podem ser representados exatamente no float de precisão dupla IEEE 754 do JavaScript. Quando JSON.parse() lê um inteiro grande como um campo resourceVersion do Kubernetes (que é um inteiro de 64 bits no servidor), ele o trunca silenciosamente. Esta é uma limitação fundamental do JavaScript no navegador que afeta todas as ferramentas JSON baseadas em navegador, incluindo esta. A solução segura é garantir que inteiros grandes sejam armazenados como strings no seu JSON antes de converter. Esta ferramenta documenta esse comportamento honestamente no erro comum de Perda de Precisão de Número abaixo.
**4. 100% Privacidade Baseada no Navegador.** Seus dados JSON — que frequentemente contêm chaves de API, credenciais de banco de dados, configurações internas de serviço e segredos de produção — nunca saem do seu navegador. Nenhum dado é enviado a nenhum servidor. Você pode verificar isso na guia de Rede do seu navegador. Esta é a única forma segura de lidar com dados de configuração sensíveis em uma ferramenta online. Veja nossa ferramenta complementar para a direção inversa em Conversor YAML para JSON, e nosso Formatador JSON se precisar validar e imprimir JSON antes de converter.
A natureza legível por humanos do YAML vem com uma troca: ele tem mais casos extremos de análise do que o JSON. Além do problema Norway, o YAML tem peculiaridades com números octais (0777 é analisado como 511 no YAML 1.1), sintaxe de string multilinha (| para literal, > para dobrado), referências de âncora e alias (&anchor e *alias) e suporte a múltiplos documentos (separador ---). O JSON não tem nenhuma dessas complexidades — é um formato estrito e mínimo com apenas seis tipos de dados. Para troca de dados entre máquinas, JSON é quase sempre a melhor escolha. Para arquivos de configuração editados por humanos onde legibilidade e comentários importam, o YAML vence. Este conversor oferece o melhor dos dois mundos: use JSON programaticamente, converta para YAML para sua infraestrutura.
// Convert JSON to YAML in Node.js using the eemeli/yaml library
import { Document } from 'yaml';
const data = JSON.parse('{"apiVersion":"apps/v1","kind":"Deployment"}');
// version: '1.1' ensures Norway-problem strings (yes/no/on/off/y/n)
// are automatically quoted in the output for YAML 1.1 parser safety
const doc = new Document(data, { version: '1.1' });
const yamlString = doc.toString({
indent: 2,
lineWidth: 0, // disable line wrapping
defaultStringType: 'PLAIN', // Auto mode: only quote when needed
});
console.log(yamlString);
// apiVersion: apps/v1
// kind: Deployment Recursos Principais
Conversão ao Vivo
A saída YAML atualiza instantaneamente conforme você digita ou cola JSON — sem necessidade de botão Converter. Entradas grandes (>200KB) mudam automaticamente para o modo manual para manter o navegador responsivo.
Indentação de 2 ou 4 Espaços
Alterne entre indentação de 2 espaços (padrão para Kubernetes, Docker Compose e GitHub Actions) e 4 espaços (convenção do Ansible). Tabs são proibidos em YAML — esta ferramenta sempre usa espaços.
Aspas Seguras Automáticas (Norway-safe)
O modo Auto padrão usa o esquema YAML 1.1 para automaticamente entre aspas strings como «no», «yes», «on», «off», «y» e «n» que seriam lidas erroneamente como booleanos pelos parsers YAML 1.1, prevenindo configurações incorretas em produção.
Estilos Block e Flow
O estilo Block produz YAML indentado e legível por humanos, ideal para manifestos e arquivos de configuração. O estilo Flow produz YAML compacto e inline, semelhante ao JSON — útil para trechos de documentação ou ferramentas que preferem saída mínima.
100% Privacidade Baseada no Navegador
Toda a conversão é executada localmente no seu navegador usando JavaScript. Seus dados JSON — incluindo chaves de API, credenciais e configurações de produção — nunca são enviados a nenhum servidor, nunca são registrados e nunca são armazenados.
Suporte para K8s, Compose e Terraform
Otimizado para casos de uso DevOps do mundo real: manifestos do Kubernetes, stacks Docker Compose, valores de charts Helm, workflows do GitHub Actions, especificações OpenAPI e saídas de plano JSON do Terraform — com exemplos para cada um.
Exemplos
Kubernetes Deployment
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-app","namespace":"production","labels":{"app":"my-app","version":"1.0.0"}},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-app"}},"template":{"metadata":{"labels":{"app":"my-app"}},"spec":{"containers":[{"name":"my-app","image":"my-app:1.0.0","ports":[{"containerPort":8080}],"resources":{"requests":{"memory":"64Mi","cpu":"250m"},"limits":{"memory":"128Mi","cpu":"500m"}}}]}}}} Converta um manifesto de Deployment do Kubernetes do formato de resposta JSON da API para YAML, para aplicar com kubectl apply -f
Docker Compose
{"version":"3.9","services":{"web":{"image":"nginx:1.25-alpine","ports":["80:80","443:443"],"environment":{"NGINX_HOST":"example.com","NGINX_PORT":"80"},"depends_on":["db"],"restart":"unless-stopped"},"db":{"image":"postgres:16-alpine","environment":{"POSTGRES_DB":"mydb","POSTGRES_USER":"admin","POSTGRES_PASSWORD":"secret"},"volumes":["pgdata:/var/lib/postgresql/data"]}},"volumes":{"pgdata":{}}} Converta uma definição de serviço Docker Compose de JSON para o formato YAML exigido pelo docker compose up
Workflow do GitHub Actions
{"name":"CI","on":{"push":{"branches":["main"]},"pull_request":{"branches":["main"]}},"jobs":{"build":{"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v4"},{"name":"Set up Node.js","uses":"actions/setup-node@v4","with":{"node-version":"20","cache":"pnpm"}},{"name":"Install dependencies","run":"pnpm install --frozen-lockfile"},{"name":"Run tests","run":"pnpm test"}]}}} Converta uma definição de workflow de CI do GitHub Actions de JSON para YAML, para commitar em .github/workflows/
Especificação OpenAPI
{"openapi":"3.0.3","info":{"title":"User API","version":"1.0.0","description":"Manage application users"},"paths":{"/users":{"get":{"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}}},"/users/{id}":{"get":{"summary":"Get user","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"}}}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}} Converta uma especificação OpenAPI 3.0 de JSON para YAML — o formato preferido pelo Swagger UI, Redoc e pela maioria das ferramentas de API
package.json
{"name":"my-app","version":"1.0.0","description":"A sample Node.js application","private":true,"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","test":"vitest","lint":"eslint . --ext .ts,.tsx"},"dependencies":{"react":"^18.3.0","react-dom":"^18.3.0"},"devDependencies":{"typescript":"^5.4.0","vite":"^5.2.0","vitest":"^1.5.0","eslint":"^8.57.0","@types/react":"^18.3.0"},"engines":{"node":">=20.0.0","pnpm":">=9.0.0"}} Converta um package.json típico de Node.js para YAML — útil para migrar configurações de projeto para ferramentas que preferem YAML
Plano JSON do Terraform
{"format_version":"1.0","terraform_version":"1.7.4","variables":{"region":{"value":"us-east-1"}},"planned_values":{"root_module":{"resources":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","values":{"bucket":"my-app-assets","force_destroy":false,"tags":{"Environment":"production","ManagedBy":"terraform"}}}]}},"resource_changes":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","change":{"actions":["create"],"before":null,"after":{"bucket":"my-app-assets","force_destroy":false}}}]} Converta a saída do plano JSON do Terraform para YAML para revisão humana, trilhas de auditoria GitOps e pipelines de CI/CD — um diferencial que a maioria dos conversores não oferece
Como Usar
- 1
Cole seu JSON
Insira ou cole seus dados JSON no campo de entrada acima. Você também pode clicar em «Carregar exemplo» para experimentar uma amostra como um Deployment do Kubernetes, um arquivo Docker Compose ou um plano do Terraform.
- 2
Veja a saída YAML ao vivo
O YAML aparece instantaneamente no painel de saída. Ajuste as Opções (indentação 2/4, aspas Auto/Duplas/Simples, estilo Block/Flow) para corresponder aos requisitos da sua ferramenta de destino.
- 3
Copie ou Baixe
Clique em Copiar para pegar o YAML para a área de transferência, ou em Baixar para salvá-lo como arquivo .yaml pronto para kubectl apply, docker compose up ou qualquer outra ferramenta.
Armadilhas Comuns de Conversão
Vírgulas Finais
JSON não permite vírgula após o último elemento em um objeto ou array. Isso é extremamente comum ao copiar de código JavaScript, que permite vírgulas finais. Remova a vírgula final antes de converter.
{"name": "Alice", "role": "admin",} {"name": "Alice", "role": "admin"} Aspas Simples
JSON exige aspas duplas para todos os valores de string e chaves de objeto. Aspas simples são válidas em JavaScript e Python, mas são um erro de sintaxe em JSON.
{'name': 'Alice', 'active': true} {"name": "Alice", "active": true} Chaves sem Aspas
Todas as chaves de objeto JSON devem estar entre aspas duplas. Chaves sem aspas são válidas em literais de objeto JavaScript, mas causarão um erro de análise em JSON estrito.
{name: "Alice", role: "admin"} {"name": "Alice", "role": "admin"} Comentários Não Permitidos
O JSON padrão não suporta comentários de nenhum tipo — nem //, /* */ ou #. Se precisar de comentários na configuração, use YAML (que suporta comentários #) ou JSONC (JSON com Comentários, usado pelo VS Code). Remova todos os comentários antes de usar os dados como JSON.
{"port": 8080 // HTTP port} {"port": 8080} Problema Norway do YAML (tratado automaticamente no modo Auto)
Nos parsers YAML 1.1 (usados pelo Kubernetes, Ansible, PyYAML, Ruby Psych), as strings simples yes, no, on, off, y e n são analisadas como booleanos verdadeiro/falso em vez de strings. O modo Auto desta ferramenta coloca automaticamente aspas nesses valores na saída YAML para garantir round-trips seguros por qualquer parser YAML 1.1 ou 1.2. Se você selecionar o modo de aspas Duplas ou Simples, todas as strings são explicitamente entre aspas, o que também evita o problema — mas o modo Auto produz a saída mais natural.
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true # YAML with Auto quoting (safe): country: 'no' enabled: 'yes' # YAML 1.1 parser reads: country="no", enabled="yes"
Perda de Precisão para Inteiros Grandes
O JavaScript só pode representar inteiros exatamente até 2^53 - 1 (9007199254740991). Inteiros JSON maiores que isso — como os campos resourceVersion do Kubernetes (que são int64 no servidor) — são silenciosamente arredondados quando analisados por JSON.parse(). Esse número truncado aparece na saída YAML. Esta é uma limitação fundamental do JavaScript no navegador que afeta todas as ferramentas JSON baseadas em navegador. A solução segura é armazenar inteiros grandes como strings no JSON antes de converter.
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number // Store large integers as strings to preserve precision
{"resourceVersion": "9007199254740993"}
// YAML output: resourceVersion: '9007199254740993' (exact) Casos de Uso Comuns
- Manifestos do Kubernetes
- Converta respostas JSON da API de kubectl get -o json ou da API do Kubernetes em manifestos YAML para workflows GitOps, overlays do Kustomize e deployments com kubectl apply -f.
- Arquivos Docker Compose
- Transforme a saída JSON de docker inspect ou configurações de serviço geradas programaticamente em arquivos docker-compose.yaml compatíveis com docker compose up e deployments Docker Stack.
- Valores de Charts Helm
- Converta exportações de configuração JSON em arquivos YAML de valores para deployments de charts Helm, permitindo configuração de infraestrutura com controle de versão e sintaxe YAML limpa.
- Workflows do GitHub Actions
- Construa definições de workflow do GitHub Actions programaticamente em JSON e converta para o formato .github/workflows/*.yaml exigido pelo runner do GitHub Actions.
- Especificações OpenAPI
- Converta especificações OpenAPI/Swagger do formato JSON retornado por muitos frameworks (FastAPI, SpringDoc) para o formato YAML preferido pelo Swagger UI, Redoc e ferramentas de gateway de API.
- Migração de Configuração
- Migre configurações de aplicação armazenadas em JSON (appsettings.json, config.json) para o formato YAML para ferramentas que exigem ou preferem YAML, adicionando a capacidade de usar comentários para documentação.
Detalhes Técnicos
- Análise JSON Compatível com RFC 8259
- A entrada JSON é analisada usando o JSON.parse() nativo do navegador, que é totalmente compatível com RFC 8259. Isso fornece mensagens de erro de sintaxe precisas, incluindo informações de posição (números de linha e coluna com melhor esforço), e lida com todos os tipos de dados JSON: strings, números, booleanos, null, arrays e objetos.
- Saída YAML 1.2 via API de Documento eemeli/yaml com Esquema YAML 1.1
- O YAML é gerado usando a biblioteca eemeli/yaml (v2.8+, segura contra CVEs) via sua API de Documento com version: '1.1'. Essa combinação produz saída compatível com YAML 1.2 enquanto aplica as regras de aspas do YAML 1.1 — o que significa que strings do problema Norway (yes/no/on/off/y/n) são automaticamente entre aspas na saída, tornando-a segura para parsers YAML 1.1 e 1.2. A quebra de linha é desativada (lineWidth: 0) para preservar strings longas intactas.
- 100% Baseado no Navegador — Sem Upload, Sem Servidor
- Todo o processamento acontece inteiramente no motor JavaScript do seu navegador. Nenhum dado é transmitido pela rede em nenhum momento. Entradas maiores que 200KB mudam automaticamente do modo ao vivo para o modo manual (exigindo um clique explícito em Converter) para manter o navegador responsivo e evitar o bloqueio da thread principal durante a serialização pesada.
Melhores Práticas
- Sempre Use o Modo Auto de Aspas para Configurações DevOps
- Ao converter JSON para uso no Kubernetes, Helm, Ansible, Docker Compose ou GitHub Actions, sempre use o modo padrão Auto (Norway-safe) de aspas. Os parsers YAML 1.1 nessas ferramentas interpretarão silenciosamente yes, no, on, off, y e n simples como booleanos — o modo Auto previne isso de forma transparente.
- Use Indentação de 2 Espaços para Ferramentas Cloud-Native
- Kubernetes, Docker Compose, GitHub Actions e Helm usam indentação de 2 espaços por convenção. Usar indentação de 4 espaços nesses arquivos é YAML válido, mas criará inconsistência com exemplos da comunidade, configurações geradas automaticamente e os manifestos existentes da sua equipe.
- Armazene Inteiros Grandes como Strings Antes de Converter
- Os campos resourceVersion, uid e outros campos int64 do servidor de API do Kubernetes podem exceder o intervalo seguro de inteiros do JavaScript (2^53 - 1). Se precisar de precisão numérica exata, armazene esses valores como strings JSON antes de converter. Isso é especialmente importante para a saída de kubectl get -o json que inclui campos gerados pelo servidor.
- Valide o JSON Primeiro
- Se sua fonte JSON é escrita à mão ou vem de um sistema que ocasionalmente produz saída inválida (vírgulas finais, chaves sem aspas, comentários), valide-a com um formatador JSON antes de converter. Use nosso Formatador JSON para detectar e corrigir erros de sintaxe primeiro, depois converta o JSON limpo para YAML.
- Prefira o Estilo Block para Arquivos no Controle de Versão
- O YAML no estilo Block produz diffs limpos e legíveis por humanos no Git, porque cada campo aparece em sua própria linha. O estilo Flow (compacto, inline) torna os diffs mais difíceis de ler e revisar. Reserve o estilo Flow para incorporar trechos curtos de YAML em documentação ou para ferramentas que exigem saída compacta.
Perguntas Frequentes
Como converter JSON para YAML online?
O que é o problema Norway do YAML e como esta ferramenta o trata?
Por que o problema Norway importa para Kubernetes e DevOps?
Devo usar indentação de 2 ou 4 espaços para YAML?
Como usar esta ferramenta para criar um manifesto do Kubernetes?
Como converter um JSON do Docker Compose para YAML?
Números JSON maiores que 2^53 podem perder precisão ao converter para YAML?
O conversor preserva a ordem original das chaves do meu JSON?
Quando devo usar JSON versus YAML?
Como posso converter JSON para YAML na linha de comando?
Como converter JSON para YAML em Python, Node.js ou Go?
Meus dados JSON são enviados a algum servidor ao usar esta ferramenta?
Existe um limite de tamanho de arquivo para entrada JSON?
Ferramentas relacionadas
Ver todas as ferramentas →Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Formatador e Validador JSON
Codificação e Formatação
Formate, valide e embeleze JSON instantaneamente no seu navegador. Ferramenta online gratuita com validação de sintaxe, detecção de erros, minificação e cópia com um clique. 100% privado — seus dados nunca saem do seu dispositivo.
Codificador e Decodificador de URL com Analisador Integrado
Codificação e Formatação
Cole uma URL para decodificar ou codificar em tempo real. Analisador de URL integrado decompõe cada componente em campos editáveis. Modo duplo: encodeURI e encodeURIComponent. Privado — nenhum dado enviado a servidor.
Conversor YAML para JSON
Codificação e Formatação
Cole YAML e obtenha JSON instantaneamente. Conversão ao vivo no navegador. Suporte a manifestos K8s, OpenAPI e valores Helm. 100% privado, sem upload.
Conversor de Base Numérica — Binário, Hex, Decimal e Octal
Ferramentas de Conversão
Converta números entre binário, hexadecimal, decimal, octal e qualquer base personalizada (2-36) instantaneamente. Gratuito, privado, sem cadastro — todo o processamento acontece no seu navegador.
Comprimir Imagens Online — JPEG, PNG e WebP
Ferramentas de Conversão
Reduza o tamanho de imagens em até 80% — comprima JPEG, PNG e WebP no navegador, sem upload. Lote de 20 imagens, ajuste de qualidade, compare antes e depois. Gratuito e privado.