YAML y JSON pueden describir los mismos datos: objetos, listas, cadenas, números, booleanos y nulo. Se ven muy distintos, y cada uno encaja en trabajos diferentes.
Los mismos datos en ambos
JSON:
{
"name": "api",
"ports": [80, 443],
"debug": false
}
YAML:
name: api
ports:
- 80
- 443
debug: false
Principales diferencias
- Sintaxis: JSON usa llaves, corchetes, comillas y comas. YAML usa sangría y guiones.
- Comentarios: YAML permite
# comentarios. JSON no tiene ninguno. - Legibilidad: YAML es más fácil de leer y escribir a mano para configuración. JSON es más explícito.
- Rigidez: JSON es pequeño y estricto, así que los analizadores coinciden. YAML tiene muchas funciones y casos límite.
- Varios documentos: YAML puede contener varios documentos en un archivo, separados por
---. - Anclas y alias: YAML puede reutilizar un bloque con
&anclay*alias.
Dónde se usa cada uno
- JSON: APIs, almacenamiento del navegador, manifiestos de paquetes, intercambio de datos entre programas.
- YAML: archivos de configuración, como pipelines de CI, manifiestos de Kubernetes y Docker Compose.
Trampas de YAML
- La sangría importa. Usa espacios, nunca tabuladores, y sé coherente.
- Tipado implícito. Valores sin comillas como
yes,no,onuoffpueden leerse como booleanos en algunas versiones del formato, y1.10se convierte en número. Pon comillas cuando necesites cadenas. - Caracteres especiales. Los dos puntos seguidos de un espacio o un
*inicial necesitan comillas.
Convertir entre ellos
El JSON válido es casi siempre YAML válido, ya que YAML es en gran medida un superconjunto. Convertir de YAML a JSON pierde los comentarios y las anclas, porque JSON no puede representarlos.
Preguntas frecuentes
¿Cuál se analiza más rápido? JSON, porque es más simple.
¿Cuál elijo para un nuevo archivo de configuración? YAML si las personas lo editan a menudo y los comentarios ayudan, JSON si sobre todo lo leen y escriben programas.

