Convertidor JSON / YAML/ JSON ↔ YAML
Conversión bidireccional entre JSON y YAML — cambia de dirección instantáneamente con indentación JSON personalizada.
JSON
YAML
¿Esta herramienta resolvió tu problema?
Ejemplos 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: AliceCLI 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.jsonPreguntas frecuentes
¿Cuál es la relación entre YAML y JSON?
YAML es un superconjunto de JSON — JSON válido también es YAML válido. YAML añade: comentarios (#), cadenas multilínea (| y >), anclas y referencias (& y *), tipos de fecha/hora flexibles y cadenas sin comillas.
¿Cuándo usar YAML en lugar de JSON?
YAML para: configuraciones CI/CD, Docker Compose, manifiestos Kubernetes, archivos de configuración editados por humanos, texto multilínea. JSON para: intercambio de datos API (más rápido), requisitos de tipo estrictos, datos generados por máquina.
¿Cuáles son las reglas de indentación YAML?
YAML usa espacios (nunca tabulaciones) para indentación. Todas las claves al mismo nivel deben tener indentación idéntica. El estándar es 2 o 4 espacios. YAML es muy sensible a errores de indentación.
¿Cómo escribir cadenas multilínea en YAML?
Dos estilos de bloque: bloque literal (|) conserva saltos de línea. Bloque plegado (>) reemplaza saltos simples por espacios. Estilos flow: comillas simples (sin escape), comillas dobles (con escape).
¿Cómo analizar YAML en Node.js?
Use la biblioteca js-yaml (npm install js-yaml): const yaml = require('js-yaml'); const obj = yaml.load(yamlString); const str = yaml.dump(obj);. Por seguridad, use yaml.safeLoad.
¿Cuáles son los problemas de compatibilidad comunes?
1) Los comentarios YAML (#) se pierden al convertir a JSON. 2) Las anclas (&) y alias (*) se expanden en objetos completos. 3) Las fechas se analizan como objetos Date. 4) Los enteros muy grandes pueden perder precisión.