§

Cole o JSON ou YAML que você quer converter.

Modo
Indentação
Opções
§

Saída

yaml

Alternar entre JSON e YAML é tarefa diária para times de plataforma cloud-native no Brasil e em Portugal. O Nubank opera uma vasta plataforma Kubernetes cujos manifests são escritos em YAML, o Itaú Unibanco migrou cargas críticas para contêineres, o Magazine Luiza padronizou pipelines CI/CD com YAML em GitHub Actions e a Globo.com mantém centenas de deployments K8s para streaming. Em Portugal, a Caixa Geral de Depósitos e a INCM publicam especificações OpenAPI em YAML, enquanto charts Helm e templates do Argo CD são versionados como YAML mas validados como JSON. Este conversor faz o caminho de ida e volta localmente, mantendo secrets, JWTs e configurações proprietárias dentro do navegador.

O que é conversão JSON ↔ YAML?

JSON (JavaScript Object Notation, RFC 8259) é um formato de texto estrito delimitado por chaves para dados estruturados; YAML (YAML Ain't Markup Language, versão 1.2) é um superconjunto de JSON que usa indentação, quebras de linha e sintaxe legível para o mesmo modelo de valor. Converter entre os dois permite pivotar a mesma configuração entre uma forma amigável a máquinas (JSON para APIs, validação de esquemas, transformações programáticas) e uma forma amigável a humanos (YAML para revisões de código, manifests Kubernetes, workflows do GitHub Actions) sem reescrever uma única chave.

Como funciona a conversão JSON ↔ YAML?

Cada conversão roda localmente no seu navegador usando a biblioteca js-yaml embutida (MIT, versão 4.1.0). Os passos principais são:

  1. O seletor de modo (Detecção automática / JSON → YAML / YAML → JSON) decide qual pipeline roda. No modo Detecção automática, o primeiro caractere não-branco da entrada escolhe a direção — { ou [ significa JSON; qualquer outra coisa significa YAML.
  2. JSON → YAML: JSON.parse valida a entrada e produz um valor JavaScript; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) escreve a forma YAML 1.2. Com Multi-documento ligado, um array de entrada é despejado um elemento por documento e unido com separadores ---.
  3. YAML → JSON: jsyaml.loadAll analisa todos os documentos da entrada (lidando com separadores --- automaticamente) em um array; entradas de um único documento são desempacotadas para que a saída JSON seja o próprio documento, não um array de um elemento.
  4. Indentação (2 ou 4 espaços) e Impressão bonita são configuráveis. Com Impressão bonita desligada, emite-se JSON minificado via JSON.stringify(value) sem espaços em branco.
  5. A saída é escrita na área de texto somente leitura. Em falhas de análise YAML, a mensagem de erro inclui a linha e coluna (1-indexadas) reportadas pelo e.mark do js-yaml para você ir direto ao bug.

Por que converter JSON e YAML com esta ferramenta?

  • Privacidade: cada passagem de análise, transformação e emissão acontece no seu navegador. Os dados — incluindo secrets Kubernetes, JWTs assinados e configurações proprietárias — nunca chegam aos nossos servidores.
  • YAML multi-documento: jsyaml.loadAll reconhece separadores --- e retorna um array de documentos, que o conversor desempacota para casos de um documento ou preserva como array JSON para casos multi-documento.
  • Âncoras e aliases resolvidos: o mecanismo &anchor / *alias do YAML é tratado pelo esquema padrão do js-yaml. Um valor definido uma vez e referenciado duas vezes vai e volta para um objeto JSON onde todas as referências guardam valores iguais.
  • Sem CDN, sem telemetria: a biblioteca js-yaml.min.js é servida da mesma origem da página, então a ferramenta funciona offline, atrás de proxies corporativos e em ambientes air-gapped.

Quais são as aplicações comuns da conversão JSON ↔ YAML?

Pivotar entre JSON e YAML aparece em DevOps, engenharia de plataforma e tooling de APIs:

  • Manifests Kubernetes: converter um YAML Deployment, ConfigMap ou HelmRelease para JSON para que um validador interno de políticas (Joi, Ajv, OPA Rego) possa lintar programaticamente, e depois voltar para YAML para o apply no cluster.
  • Workflows CI/CD: rodar um workflow.yml do GitHub Actions por JSON para que um gerador de código reescreva a matriz ou as dependências entre jobs, e então emitir o YAML limpo para o PR.
  • Especificações OpenAPI: colar um openapi.json da documentação autogerada de um backend e convertê-lo em openapi.yaml para a referência editada por humanos versionada no repositório.

Como é um exemplo de ida e volta JSON ↔ YAML?

Colar {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} e pressionar CONVERTER no modo JSON → YAML produz oito linhas de YAML indentado com apiVersion: apps/v1 na primeira linha. Alimentando esse YAML de volta no modo YAML → JSON com Impressão bonita ligada retorna o objeto original byte a byte após um JSON.stringify(value, null, 2) estável, com a ordem das chaves preservada porque o esquema padrão do js-yaml honra a ordem de inserção nas duas direções.

Este conversor JSON ↔ YAML roda inteiramente no meu navegador?

Sim. Cada passagem de análise, transformação e emissão roda localmente como JavaScript dentro da sua aba do navegador. A biblioteca js-yaml embutida é entregue da mesma origem da página — sem CDN, sem fetch, sem XMLHttpRequest, sem navigator.sendBeacon sobre a entrada. A ferramenta também funciona offline depois que a página carrega, porque é um bundle estático HTML/CSS/JS com a biblioteca vendor copiada ao lado. Secrets Kubernetes, payloads JWT, YAMLs assinados de CloudFormation e configurações proprietárias permanecem no seu dispositivo.

Como o conversor lida com YAML multi-documento?

YAML suporta múltiplos documentos em um único fluxo, separados por linhas contendo apenas ---. Em YAML → JSON o conversor chama jsyaml.loadAll, que retorna cada documento como um valor JavaScript. Se exatamente um documento for encontrado, a saída JSON é esse documento diretamente; se dois ou mais forem encontrados, a saída JSON é um array. Em JSON → YAML, quando a entrada é um array JSON E o interruptor Multi-documento está ligado, cada elemento do array é emitido como seu próprio documento com separadores --- entre eles — útil para gerar um pacote compatível com kubectl apply a partir de um array JSON de recursos.

Âncoras e aliases YAML são suportados?

Sim — definições &anchor e referências *alias são resolvidas pelo esquema padrão do js-yaml durante o passo de carga. Uma entrada YAML como defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d é analisada em um objeto JSON onde job_a e job_b contêm ambos retries: 3, timeout: 30. A chave de merge << (uma extensão YAML 1.1 que o js-yaml ainda honra) também é suportada no esquema padrão.

Os comentários YAML são preservados ao converter para JSON e voltar?

Não — o js-yaml remove os comentários no passo de análise, então uma ida e volta YAML → JSON → YAML perde toda linha prefixada com #. É uma limitação conhecida do modelo load/dump; se a preservação de comentários for crítica, use uma biblioteca com consciência de comentários como o pacote npm yaml (que oferece uma API CST + AST projetada para preservar trivia) em vez do js-yaml. Para a maioria dos fluxos de conversão de configuração o trade-off é aceitável: o YAML pós ida e volta mantém todas as chaves, valores, âncoras e aliases, apenas sem os comentários escritos por humanos.

O que acontece com tags YAML customizadas?

O conversor usa o DEFAULT_SCHEMA do js-yaml, que entende !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary e !!timestamp — toda tag dos esquemas core e JSON do YAML 1.2. Tags customizadas ou específicas de aplicação (p. ex. !Ref no CloudFormation, !vault no Ansible) não são reconhecidas e aparecem como um erro claro citando a tag não suportada. Para CloudFormation especificamente, use o fluxo aws cloudformation package + --output-template-file para expandir as tags customizadas antes de colar neste conversor.

Este conversor JSON ↔ YAML já vem com js-yaml@4.1.0 embutido na mesma origem, suporta fluxos multi-documento e âncoras/aliases prontos para uso, e reporta erros de análise YAML com linha e coluna para você corrigir a origem. Sem upload, sem CDN, sem telemetria — cada byte permanece no seu navegador.