Pular para o conteúdo

Converter YAML em JSON

Interpreta um documento YAML com a biblioteca yaml (schema core do YAML 1.2) e o devolve como JSON indentado. Comentários são descartados, anchors e aliases são expandidos, e valores como yes ou 2024-01-01 continuam strings.

Enviar configurações escritas em YAML para uma API ou um validador de JSON Schema que só aceita JSON.

YAML

Quando usar

  • Enviar configurações escritas em YAML para uma API ou um validador de JSON Schema que só aceita JSON.
  • Verificar como um arquivo de CI ou Kubernetes é realmente tipado, por exemplo se uma versão é string ou número.

Como usar

  1. Cole um único documento YAML ou carregue um arquivo .yaml/.yml.
  2. Se aparecer um erro, verifique a indentação, chaves duplicadas e separadores --- na linha indicada.
  3. Confira o que é string e o que é número no JSON de saída e copie-o.

Entrada YAML

# deployment settings
service: billing-api
replicas: 2
version: "1.10"
enabled: yes
ports:
  - 80
  - 443
env:
  LOG_LEVEL: info

JSON

{
  "service": "billing-api",
  "replicas": 2,
  "version": "1.10",
  "enabled": "yes",
  "ports": [
    80,
    443
  ],
  "env": {
    "LOG_LEVEL": "info"
  }
}

Detalhes e limitações

A interpretação roda no navegador. A saída é sempre JSON com 2 espaços; não há opção de minificar.

Valem as regras do YAML 1.2: yes/no/on/off são strings, não booleanos, e datas sem aspas continuam strings. 0o17 é octal (15).

Merge keys (<<: *anchor) não são mescladas; aparecem como uma chave literal "<<". Chaves duplicadas em um mesmo mapping são erro.

Inteiros acima de 2^53 perdem precisão no JSON. Coloque IDs longos entre aspas no YAML.

FAQ

Ele converte um arquivo com vários documentos separados por ---?

Não. Vários documentos causam o erro "Source contains multiple documents". Cole um documento por vez. Um único --- no início não tem problema.

Por que enabled: yes é uma string no JSON?

O parser segue o YAML 1.2, em que só true e false são booleanos. Escreva true/false se precisar de um booleano JSON.

Anchors e aliases são suportados?

Sim. Um alias como *base é substituído por uma cópia do valor ancorado. Já a merge key << do YAML 1.1 não é aplicada.

Especificações e referências