¿Cuál es la diferencia entre YAML y JSON?

YAML y JSON son dos formatos de serialización de datos que proporcionan un mecanismo de intercambio de datos legible por humanos. Dan formato a los datos de manera estandarizada para su intercambio entre aplicaciones de software, y su texto también es legible por humanos. Ambos representan datos como pares de clave y valor. JSON admite objetos de datos como valores, mientras que YAML no. Sin embargo, YAML admite más tipos de datos y utiliza de forma más próxima el lenguaje natural para que los desarrolladores puedan utilizarlo.

Más información sobre JSON »

Representación de datos en YAML y JSON

El aspecto y la sintaxis de JSON y YAML son similares pero ligeramente diferentes.

A simple vista, el formato JSON se asemeja más a una máquina en su representación de datos que YAML. Un mensaje JSON incluye estos símbolos:

  • Llaves para objetos
  • Dos puntos para separar pares clave-valor
  • Corchetes para matrices 
  • Comillas para delimitar cadenas

JSON se desarrolló a partir de un pequeño subconjunto de JavaScript. Por tanto, su sintaxis hace que los documentos JSON se parezcan al código de programación.
 

A diferencia de JSON, el formato YAML se parece más a cómo alguien escribiría datos estructurados en papel. Se diseñó específicamente para que fuera más fácil de leer para los humanos. Utiliza lo siguiente:

  • Sangría para representar objetos 
  • Dos puntos para separar pares clave-valor
  • Guiones para matrices
  • Almohadillas para señalar un comentario

YAML se creó originalmente para simplificar XML.

Ejemplos de documentos YAML y JSON

Ejemplos de cómo quedaría un documento con los datos del producto de una camisa en YAML y JSON.

YAML

JSON

type: Camiseta

price: 20,00

sizes:

  • S
  • M
  • L

   reviews: # Nota sobre las reseñas

  • de usuario: usuario1

         rating: 4

         created_at: 2023-04-19T12:30:00Z

  • username: usuario2

         rating: 5

         created_at: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "Camiseta",

    "price": 20,00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "usuario1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "usuario2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

Diferencias clave entre YAML y JSON

Debido a la sintaxis de YAML, se considera más fácil leer, comprender y escribir un archivo YAML que uno JSON, sobre todo para los no desarrolladores. A continuación, analizaremos otras diferencias clave.

Tipos de datos

El formato JSON admite los siguientes tipos de datos:

  • Número
  • Booleano
  • Nulo
  • Cadena
  • Matriz
  • Objeto (colección de pares clave-valor anidados)

El formato YAML admite todos los tipos de datos nativos de cualquier lenguaje de programación dinámico. Por ejemplo, admite colecciones de datos anidados formadas por secuencias (listas), escalares (como números y cadenas) y asignaciones (pares clave-valor). Este sistema le permite crear estructuras de datos más complejas. 

Compatibilidad integrada

JSON se utiliza de manera generalizada en combinación con muchos lenguajes de programación diferentes. Por ejemplo, JavaScript ofrece compatibilidad integrada para analizar JSON. La biblioteca estándar de Python también incluye JSON, y PHP 5.2 incorpora una biblioteca JSON. Del mismo modo, más de otros 50 lenguajes populares son compatibles con JSON mediante distintos paquetes y bibliotecas.

En cambio, ningún lenguaje conocido tiene compatibilidad integrada con YAML. En su lugar, los desarrolladores tienen que instalar y utilizar bibliotecas. Dos analizadores populares de YAML son PyYAML para Python y LibYAML para C. 

Control de versiones

Se puede versionar tanto JSON como YAML usando un software de control de versiones como Git. Sin embargo, se considera más fácil analizar y comprender los cambios en los archivos YAML entre versiones.

Comentarios

El formato de datos JSON no admite comentarios. Para sortear esta situación, los desarrolladores tienen que definir un par clave-valor para los comentarios.

En un archivo YAML, los comentarios van precedidos por una almohadilla.

Cuándo usar YAML en lugar de JSON

Gracias al soporte generalizado y la integración con JavaScript, JSON es un formato de serialización de datos más popular que YAML para la mayoría de los casos de uso. JSON se usa ampliamente en comunicaciones de software distribuidas, aplicaciones web, archivos de configuración y API.

Aunque YAML pueda parecer una mejor opción en función de la tipificación de datos y su formato legible por humanos, normalmente se prefiere JSON por motivos de compatibilidad cruzada. Esto se debe a que muchas aplicaciones y servicios ya analizan el formato de datos JSON.

Por otro lado, YAML ha ganado una fuerte presencia en determinados ámbitos de la computación debido a su legibilidad y soporte de comentarios. En particular, YAML es el principal formato de serialización de datos para archivos de configuración en muchas herramientas y servicios de automatización, DevOps e infraestructura como código (IaC). Por ejemplo, YAML se usa a menudo en archivos de Docker y Kubernetes.

YAML también se utiliza para escribir archivos de configuración en estas ofertas de Amazon Web Services (AWS): AWS CloudFormation, AWS Serverless Application Model (AWS SAM) y AWS CodeBuild.

Resumen de las diferencias entre YAML y JSON

 

JSON

YAML

¿Qué es?

Un formato de serialización de datos para intercambiar datos estructurados entre aplicaciones y servicios de software. Da prioridad al uso de las aplicaciones antes que al uso humano. 

Un formato de serialización de datos para intercambiar datos estructurados entre aplicaciones y servicios de software. Da prioridad al uso humano antes que al de las aplicaciones.

Principales casos de uso

Ampliamente extendido en plataformas, lenguajes, comunicaciones de software distribuido, aplicaciones web, archivos de configuración y API.

Archivos de configuración en muchas herramientas y servicios de automatización, DevOps e infraestructura como código (IaC).

Legibilidad

Fácil.

Lo más fácil.

Tipos de datos

Número, booleano, nulo, cadena, matriz y objeto.

Admite todos los tipos de datos mediante colecciones de datos anidados que comprenden secuencias, escalares y asignaciones.

Admite comentarios

No.

Sí.

Admite objetos de datos como valores

Sí.

No.

Control de versiones

Sí, pero no es tan sencillo analizar y comprender de un solo vistazo las diferencias entre las versiones.

Sí, y es fácil analizar y comprender de un solo vistazo las diferencias entre las versiones.

¿Cómo puede AWS cumplir con sus requisitos de YAML y JSON?

Todos los servicios de integración de datos de AWS pueden procesar archivos JSON. Estos son tres servicios de AWS relevantes:

  • AWS Glue es un servicio de integración de datos sin servidor. Puede usar AWS Glue para descubrir, preparar y combinar datos para análisis, machine learning y el desarrollo de aplicaciones.
  • Amazon Simple Queue Service (Amazon SQS) es un servicio de colas de mensajes totalmente administrado. Puede usarlo para enviar, almacenar y recibir mensajes entre componentes de software en cualquier volumen. Los mensajes de Amazon SQS contienen un máximo de 256 KB de datos de texto, incluidos XML, JSON y texto sin formato.
  • Amazon DocumentDB (con compatibilidad con MongoDB) es una base de datos de documentos JSON nativa completamente administrada. Amazon DocumentDB hace que sea fácil y rentable operar cargas de trabajo de documentos críticos prácticamente a cualquier escala sin administrar la infraestructura.

Del mismo modo, las herramientas para desarrolladores de AWS admiten archivos YAML en varios servicios de implementación. Estos son dos ejemplos:

  • AWS Step Functions le permite crear flujos de trabajo resilientes sin servidor mediante el uso de servicios de AWS como AWS Lambda, Amazon Simple Notification Service (Amazon SNS), y Amazon DynamoDB. Step Functions también admite las definiciones de máquinas de estado YAML. Esto permite definir los flujos de trabajo en el mismo idioma que su infraestructura como código (IaC).
  • AWS App2Container es una herramienta de línea de comandos que puede usar para migrar y modernizar aplicaciones web de Java y .NET a un formato contenedor. Genera archivos YAML para las definiciones de tareas de Amazon Elastic Container Service (Amazon ECS) y la implementación de Kubernetes. También sigue las prácticas recomendadas de AWS en materia de seguridad y escalabilidad.

Cree una cuenta hoy mismo para comenzar a utilizar YAML y JSON en AWS.