Conversor JSON / YAML/ JSON ↔ YAML

Conversão bidirecional entre JSON e YAML — mude a direção instantaneamente com recuo JSON personalizado.

JSON
YAML

Esta ferramenta resolveu o seu problema?

Exemplos de código

JavaScript (js-yaml)
// npm install js-yaml
import yaml from 'js-yaml';

// JSON → YAML
const obj = { name: 'Alice', scores: [100, 95] };
const yamlStr = yaml.dump(obj, { indent: 2 });
// name: Alice
// scores:
//   - 100
//   - 95

// YAML → JSON
const yamlInput = `
name: Alice
scores:
  - 100
  - 95
`;
const parsed = yaml.load(yamlInput);
JSON.stringify(parsed, null, 2);
// { "name": "Alice", "scores": [100, 95] }
Python (PyYAML)
# pip install pyyaml
import yaml, json

# JSON → YAML
data = {"name": "Alice", "scores": [100, 95]}
yaml_str = yaml.dump(data, default_flow_style=False,
                      allow_unicode=True, indent=2)
# name: Alice
// scores:
// - 100
// - 95

# YAML → JSON
with open('config.yaml') as f:
    data = yaml.safe_load(f)  # use safe_load!
json_str = json.dumps(data, indent=2, ensure_ascii=False)

# Stream large files
for doc in yaml.safe_load_all(open('multi.yaml')):
    print(json.dumps(doc))
Go
// go get gopkg.in/yaml.v3
import (
  "encoding/json"
  "gopkg.in/yaml.v3"
)

// YAML → JSON
yamlStr := []byte("name: Alice\nage: 30")
var data map[string]interface{}
yaml.Unmarshal(yamlStr, &data)
jsonBytes, _ := json.MarshalIndent(data, "", "  ")

// JSON → YAML
jsonStr := []byte(`{"name":"Alice","age":30}`)
var obj interface{}
json.Unmarshal(jsonStr, &obj)
yamlBytes, _ := yaml.Marshal(obj)
// age: 30
// name: Alice
CLI Tools
# yq: YAML/JSON Swiss Army knife
# brew install yq  /  apt install yq

# YAML → JSON
yq -o=json config.yaml

# JSON → YAML
yq -P config.json

# In-place conversion
yq -i -o=yaml config.json

# Python one-liner: JSON → YAML
python3 -c "
import sys, json, yaml
print(yaml.dump(json.load(sys.stdin),
      default_flow_style=False, allow_unicode=True))
" < config.json

Perguntas frequentes

Qual é a relação entre YAML e JSON?
YAML é um superconjunto de JSON — JSON válido também é YAML válido. YAML adiciona: comentários (#), strings multilinha (| e >), âncoras e referências (& e *), tipos de data/hora flexíveis e strings sem aspas.
Quando usar YAML em vez de JSON?
YAML para: configurações CI/CD, Docker Compose, manifests Kubernetes, arquivos de configuração editados por humanos, texto multilinha. JSON para: troca de dados API (mais rápido), requisitos de tipo rigorosos, dados gerados por máquina.
Quais são as regras de recuo YAML?
YAML usa espaços (nunca tabulações) para recuo. Todas as chaves no mesmo nível devem ter recuo idêntico. O padrão é 2 ou 4 espaços. YAML é muito sensível a erros de recuo.
Como escrever strings multilinha em YAML?
Dois estilos de bloco: bloco literal (|) preserva quebras de linha. Bloco dobrado (>) substitui quebras simples por espaços. Estilos flow: aspas simples (sem escape), aspas duplas (com escape).
Como analisar YAML em Node.js?
Use a biblioteca js-yaml (npm install js-yaml): const yaml = require('js-yaml'); const obj = yaml.load(yamlString); const str = yaml.dump(obj);. Por segurança, use yaml.safeLoad.
Quais são os problemas de compatibilidade comuns?
1) Comentários YAML (#) são perdidos na conversão para JSON. 2) Âncoras (&) e aliases (*) são expandidos em objetos completos. 3) Datas são analisadas como objetos Date. 4) Inteiros muito grandes podem perder precisão.