alltools.one
Data
2025-06-21
7 min
alltools.one Team
JSONYAMLConversionConfigurationDevOps

Conversão de JSON para YAML: Um Guia Completo de Migração

JSON e YAML representam as mesmas estruturas de dados com sintaxe diferente. A conversão entre eles é direta na maioria dos casos, mas casos extremos envolvendo tipos, strings multilinhas e comentários exigem atenção. Este guia abrange o mapeamento completo entre os formatos.

Mapeamento de Sintaxe

Objetos / Mapeamentos

JSON:

{
  "database": {
    "host": "localhost",
    "port": 5432,
    "name": "myapp"
  }
}

YAML:

database:
  host: localhost
  port: 5432
  name: myapp

Arrays / Sequências

JSON:

{
  "servers": ["web1", "web2", "web3"]
}

YAML:

servers:
  - web1
  - web2
  - web3

Estruturas Aninhadas

JSON:

{
  "services": [
    {
      "name": "api",
      "ports": [8080, 8443],
      "env": {"NODE_ENV": "production"}
    }
  ]
}

YAML:

services:
  - name: api
    ports:
      - 8080
      - 8443
    env:
      NODE_ENV: production

Converta instantaneamente com nosso conversor de JSON para YAML.

Casos Extremos para Observar

1. Comentários

YAML suporta comentários; JSON não. Ao converter YAML para JSON, todos os comentários são perdidos:

# Este comentário será perdido no JSON
database:
  host: localhost  # Este também

2. Strings Multilinhas

YAML tem uma sintaxe poderosa para strings multilinhas que JSON não possui:

description: |
  This is a multi-line
  string that preserves
  line breaks.

Em JSON, isso se torna:

{
  "description": "This is a multi-line\nstring that preserves\nline breaks.\n"
}

3. Ambiguidade de Tipos

YAML detecta tipos automaticamente, o que pode causar problemas:

version: 1.0    # Float, não string "1.0"
port: 080       # Octal 64, não string "080"
country: NO     # Booleano false, não string "NO"

Em JSON, os tipos são explícitos:

{
  "version": "1.0",
  "port": "080",
  "country": "NO"
}

Ao converter JSON para YAML, adicione aspas em valores que podem ser mal interpretados.

4. Valores Nulos

Ambos suportam null, mas a sintaxe difere:

value: null     # Explícito
value: ~        # Atalho YAML
value:          # Valor vazio = null
{ "value": null }

5. Caracteres Especiais em Chaves

Chaves JSON podem conter qualquer caractere unicode. Chaves YAML com caracteres especiais precisam de aspas:

"content-type": "application/json"  # Hífen precisa de aspas
simple_key: value                    # Underscore é permitido

Conversão pela Linha de Comando

Usando yq (processador YAML)

# JSON para YAML
yq -P input.json > output.yaml

# YAML para JSON
yq -o=json input.yaml > output.json

Usando Python

# JSON para YAML
python3 -c "import json, yaml, sys; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))" < input.json > output.yaml

# YAML para JSON
python3 -c "import json, yaml, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml > output.json

Usando jq + yq juntos

# Processar JSON, saída como YAML
cat config.json | jq '.database' | yq -P

Quando Usar Cada Formato

CritérioJSONYAML
Edição humanaMais difícil (colchetes, vírgulas)Mais fácil (sintaxe limpa)
Parsing por máquinaMais rápidoMais lento
ComentáriosNão suportadoSuportado
Troca de dadosPadrão (APIs)Raro
ConfiguraçãoAceitávelPreferível
RigidezEstrito (bom)Flexível (arriscado)

Use JSON para: comunicação via API, armazenamento de dados, configurações geradas por máquina, ambientes de navegador.

Use YAML para: configurações editadas por humanos, Docker Compose, Kubernetes, pipelines de CI/CD, Ansible.

Para uma comparação mais aprofundada, veja nosso artigo YAML vs JSON.

FAQ

YAML é um superconjunto de JSON?

Sim, desde YAML 1.2 (2009), todo documento JSON válido também é YAML válido. Um parser YAML pode parsear JSON diretamente. No entanto, o inverso não é verdadeiro — recursos do YAML como comentários, âncoras e strings multilinhas não têm equivalente em JSON.

Qual é mais rápido para parsear, JSON ou YAML?

JSON é significativamente mais rápido de parsear em praticamente todas as linguagens. Parsers JSON são mais simples porque o formato tem menos sintaxe para lidar. Para arquivos de configuração carregados uma vez na inicialização, a diferença é insignificante. Para processamento de dados de alta vazão, JSON é a escolha óbvia.

Recursos Relacionados

Published on 2025-06-21
JSON to YAML Conversion: A Complete Migration Guide | alltools.one