tigtools

Conversor JSON ⇄ YAML

Alterne a direção, cole seus dados e obtenha o resultado convertido na hora. Útil para manifestos do Kubernetes, pipelines de CI e configurações de aplicativos.

Executado no seu navegador Sem cadastro

Direção
Indentação

Como usar

  1. Escolha a direção: JSON → YAML ou YAML → JSON.
  2. Cole seus dados ou clique em “Testar um exemplo”. O resultado é atualizado enquanto você digita.
  3. Escolha uma indentação de 2 ou 4 espaços para o resultado.
  4. Copie ou baixe o resultado. “Usar resultado como entrada” inverte a direção para você poder converter de volta.

Como funciona

A conversão usa a biblioteca de código aberto yaml (versão 2), que implementa a especificação YAML 1.2. Para fins práticos, YAML 1.2 é um superconjunto de JSON: qualquer documento JSON pode ser convertido para YAML sem perda, e arquivos YAML que usam apenas mapas, listas, strings, números, booleanos e null podem ser convertidos de volta para um JSON idêntico.

Ao gerar YAML, a ferramenta coloca entre aspas as strings que podem ser interpretadas como outro tipo de valor. Parsers mais antigos do YAML 1.1, como PyYAML e muitas ferramentas de CI, interpretam yes, no, on e off como booleanos, 0777 como número octal e 2024-01-31 como data. Por isso, esses valores são escritos como "yes", "0777" e "2024-01-31". Strings longas não são divididas em várias linhas. Comentários não podem ser preservados, porque JSON não tem comentários.

Ao ler YAML, âncoras (&name) e aliases (*name) são expandidos, incluindo a chave de mesclagem <<, e um arquivo com vários documentos separados por --- é convertido em um array JSON. Para proteger seu navegador, a expansão de aliases é limitada, o que impede documentos do tipo “billion laughs”. Valores YAML sem equivalente em JSON são convertidos da forma mais próxima possível: .inf e .nan viram null, e os timestamps permanecem como strings. Erros de sintaxe são informados com a linha e a coluna.

Exemplos

Manifesto do Kubernetes

Um script converte um Deployment escrito em JSON para o formato YAML esperado por quem usa kubectl, com listas em containers escritas como - name: web. Valores como "no" continuam entre aspas para permanecerem como strings.

Configuração de CI com âncoras

Um arquivo de pipeline define valores padrão com &defaults e os reutiliza com <<: *defaults. A conversão para JSON mostra exatamente quais chaves cada job recebe após a mesclagem.

Especificação OpenAPI

Um arquivo OpenAPI é mantido em YAML, mas um gerador de código precisa de JSON. Cole o YAML, escolha a indentação de 2 espaços e baixe o arquivo .json.

Perguntas frequentes

Por que "yes" aparece entre aspas no meu YAML?

De acordo com as regras do YAML 1.1, ainda usadas por PyYAML, Ansible e muitas outras ferramentas, yes, no, on ou off sem aspas são interpretados como booleanos. Colocá-los entre aspas mantém esses valores como strings em qualquer parser. As aspas não fazem parte do valor.

Os comentários YAML são preservados na conversão para JSON?

Não. JSON não tem sintaxe para comentários, então eles são descartados. Converter o JSON de volta para YAML não os recupera.

O que acontece com vários documentos YAML separados por ---?

Eles são convertidos em um único array JSON, com um elemento para cada documento, na ordem original. Um documento único é convertido diretamente para seu valor.

E quanto a tags personalizadas, como !Ref do CloudFormation?

Tags específicas de aplicativos não são reconhecidas. A ferramenta exibe um aviso e converte o valor marcado como um valor simples. Assim, !Ref MyBucket vira a string "MyBucket" e a tag é perdida.

Privacidade

As conversões são feitas inteiramente no seu navegador. Seus dados JSON ou YAML não são enviados, armazenados nem incluídos em análises.