Conversión de JSON a YAML: Una Guía Completa de Migración
JSON y YAML representan las mismas estructuras de datos con diferente sintaxis. Convertir entre ellos es sencillo en la mayoría de los casos, pero los casos límite relacionados con tipos, cadenas multilínea y comentarios requieren atención. Esta guía cubre el mapeo completo entre formatos.
Mapeo de Sintaxis
Objetos / Mappings
JSON:
{
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp"
}
}
YAML:
database:
host: localhost
port: 5432
name: myapp
Arrays / Secuencias
JSON:
{
"servers": ["web1", "web2", "web3"]
}
YAML:
servers:
- web1
- web2
- web3
Estructuras Anidadas
JSON:
{
"services": [
{
"name": "api",
"ports": [8080, 8443],
"env": {"NODE_ENV": "production"}
}
]
}
YAML:
services:
- name: api
ports:
- 8080
- 8443
env:
NODE_ENV: production
Convierte instantáneamente con nuestro convertidor de JSON a YAML.
Casos Límite a Tener en Cuenta
1. Comentarios
YAML soporta comentarios; JSON no. Al convertir YAML a JSON, todos los comentarios se pierden:
# Este comentario se perderá en JSON
database:
host: localhost # También se pierde
2. Cadenas Multilínea
YAML tiene una potente sintaxis multilínea que JSON no posee:
description: |
This is a multi-line
string that preserves
line breaks.
En JSON, esto se convierte en:
{
"description": "This is a multi-line\nstring that preserves\nline breaks.\n"
}
3. Ambigüedad de Tipos
YAML detecta tipos automáticamente, lo que puede causar problemas:
version: 1.0 # Float, no string "1.0"
port: 080 # Octal 64, no string "080"
country: NO # Boolean false, no string "NO"
En JSON, los tipos son explícitos:
{
"version": "1.0",
"port": "080",
"country": "NO"
}
Al convertir JSON a YAML, agrega comillas alrededor de valores que podrían ser malinterpretados.
4. Valores Null
Ambos soportan null, pero la sintaxis difiere:
value: null # Explícito
value: ~ # Atajo de YAML
value: # Valor vacío = null
{ "value": null }
5. Caracteres Especiales en Claves
Las claves JSON pueden contener cualquier carácter unicode. Las claves YAML con caracteres especiales necesitan comillas:
"content-type": "application/json" # El guion necesita comillas
simple_key: value # El guion bajo está bien
Conversión por Línea de Comandos
Usando yq (procesador YAML)
# JSON a YAML
yq -P input.json > output.yaml
# YAML a JSON
yq -o=json input.yaml > output.json
Usando Python
# JSON a YAML
python3 -c "import json, yaml, sys; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))" < input.json > output.yaml
# YAML a 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
# Procesar JSON, salida como YAML
cat config.json | jq '.database' | yq -P
Cuándo Usar Cada Formato
| Criterio | JSON | YAML |
|---|---|---|
| Edición humana | Más difícil (llaves, comas) | Más fácil (sintaxis limpia) |
| Parseo por máquina | Más rápido | Más lento |
| Comentarios | No soportado | Soportado |
| Intercambio de datos | Estándar (APIs) | Raro |
| Configuración | Aceptable | Preferido |
| Rigidez | Estricto (bueno) | Flexible (riesgoso) |
Usa JSON para: comunicación API, almacenamiento de datos, configuraciones generadas por máquina, entornos de navegador.
Usa YAML para: configuraciones editadas por humanos, Docker Compose, Kubernetes, pipelines de CI/CD, Ansible.
Para una comparación más profunda, consulta nuestro artículo YAML vs JSON.
FAQ
¿Es YAML un superconjunto de JSON?
Sí, desde YAML 1.2 (2009), todo documento JSON válido es también YAML válido. Un parser YAML puede parsear JSON directamente. Sin embargo, lo contrario no es cierto — las características de YAML como comentarios, anclas y cadenas multilínea no tienen equivalente en JSON.
¿Cuál es más rápido de parsear, JSON o YAML?
JSON es significativamente más rápido de parsear en prácticamente todos los lenguajes. Los parsers JSON son más simples porque el formato tiene menos sintaxis que manejar. Para archivos de configuración cargados una vez al inicio, la diferencia es insignificante. Para procesamiento de datos de alto rendimiento, JSON es la elección clara.
Recursos Relacionados
- Convertidor de JSON a YAML — Convierte entre formatos al instante
- YAML vs JSON — Comparación detallada de formatos
- Tutorial de Sintaxis YAML — Aprende YAML desde cero