alltools.one
Data
2025-06-21
7 min
alltools.one Team
JSONYAMLConversionConfigurationDevOps

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

CriterioJSONYAML
Edición humanaMás difícil (llaves, comas)Más fácil (sintaxis limpia)
Parseo por máquinaMás rápidoMás lento
ComentariosNo soportadoSoportado
Intercambio de datosEstándar (APIs)Raro
ConfiguraciónAceptablePreferido
RigidezEstricto (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

Published on 2025-06-21
JSON to YAML Conversion: A Complete Migration Guide | alltools.one