desarrollodatosdevops

JSON o YAML: cuándo usar cada uno y cómo convertirlos

JSON y YAML describen las mismas estructuras de datos, pero toman decisiones distintas sobre legibilidad, rigidez y herramientas. Aquí tienes cuándo tirar de cada uno y cómo convertir de uno a otro en segundos.

·5 min de lectura

La diferencia de fondo

JSON (JavaScript Object Notation) y YAML (YAML Ain't Markup Language) representan los mismos datos jerárquicos de clave y valor: objetos, listas, cadenas, números, booleanos y nulos. La diferencia está en cómo los expresan.

JSON es estricto, está pensado para las máquinas y no deja lugar a la ambigüedad. YAML está pensado para que lo lea una persona, es sensible a los espacios y resulta flexible, a veces peligrosamente flexible.

JSON: ventajas e inconvenientes

  • Todos los lenguajes importantes traen un analizador de JSON incorporado
  • No hay ambigüedad: ninguna conversión de tipo sorprendente
  • Ocupa muy poco al minificarlo
  • Se transmite sin problemas en cuerpos HTTP y en URL
  • Es fácil de comparar en un control de versiones
  • No admite comentarios
  • No hay cadenas de varias líneas sin escapar caracteres
  • Todas las claves tienen que ir entrecomilladas
  • Una coma final es un error de sintaxis
  • Se vuelve difícil de leer en configuraciones muy anidadas

**Ideal para:** cuerpos de petición y respuesta de API, almacenamiento local, documentos de base de datos, comunicación entre servicios y cualquier intercambio de datos entre máquinas.

YAML: ventajas e inconvenientes

  • Admite comentarios (# así)
  • Las cadenas de varias líneas son ciudadanas de primera con | y >
  • La mayoría de cadenas no necesitan comillas
  • Resulta más compacto en archivos de configuración
  • Se usa muchísimo en herramientas de operaciones (Docker Compose, GitHub Actions, Kubernetes)
  • Los espacios cuentan: un error de indentación provoca fallos silenciosos
  • Varias conversiones de tipo del estilo del "problema de Noruega": no se interpreta como false, on como true y un 1.0 suelto como número decimal
  • Las distintas versiones de YAML (1.1 y 1.2) tienen reglas diferentes
  • Es más difícil de analizar correctamente que JSON

**Ideal para:** archivos de configuración que edita una persona, procesos de integración y despliegue continuos, manifiestos de Kubernetes, libros de Ansible y cualquier archivo que alguien escriba y lea a menudo.

El mismo ejemplo en los dos formatos

Los mismos datos en JSON:

json { "name": "api-service", "port": 8080, "database": { "host": "localhost", "port": 5432 }, "features": ["auth", "cache", "metrics"] }

Y en YAML:

yaml name: api-service port: 8080 database: host: localhost port: 5432 features: - auth - cache - metrics

La versión en YAML se lee mejor si vas a editar la configuración a mano. La de JSON es más segura si un proceso automatizado tiene que analizarla.

El problema de Noruega y otras trampas de YAML

YAML 1.1 (que usan muchas herramientas) interpreta como booleanos estos valores: yes, no, on, off, true y false. Una clave de configuración como country: NO acabaría valiendo country: false. Entrecomilla las cadenas que se puedan malinterpretar.

Con los decimales también se pasa de listo: version: 1.0 se convierte en el número 1.0, no en la cadena "1.0". En archivos de Docker Compose esto ha provocado fallos reales con los números de versión.

Convertir de uno a otro

Los conversores de YAML a JSON y de JSON a YAML de NoxaKit hacen la conversión completa al instante, incluidos los objetos anidados, las listas, las cadenas de varias líneas y la normalización de tipos. Pega tu YAML y te devuelve JSON limpio e indentado (o al revés), listo para copiar con un clic.

El formateador de YAML también valida la sintaxis y reordena la indentación de forma coherente, muy útil antes de subir un manifiesto de Kubernetes o un flujo de trabajo de GitHub Actions.

Prueba estas herramientas gratuitas

Más artículos