YAML, ventajas, desventajas y cuando usarlo
YAML (Yet Another Markup Language – Ain’t Markup Language [YAML no es otro lenguaje de marcado]) es un formato de serialización de datos de forma que sea legible por seres humanos.
Se inspira en lenguajes como XML, C, Python, Perl, así como el formato para correos electrónicos especificado en RFC 2822.
Es case sensitive y normalmente lo encontraremos con la extensión .yml o incluso .yaml.
Existen unas reglas generales que deben cumplirse en un documento YAML.
Son bastantes, aunque las principales podrían ser las siguientes:
- Los datos de un documento YAML deben ser legibles, imprimibles y utilizando caracteres Unicode, UTF-8 ó UTF-16.
- Los comentarios se realizan utilizando el carácter # dentro de la línea que contiene el comentario.
- Los caracteres , y ; deben ir seguidos de un espacio en blanco. De esta forma, se podrán representar valores que queramos que tengan esos caracteres.
- Los espacios en blanco están permitidos, pero no los tabuladores.
- Las listas comienzan por el caracter – con un valor por cada línea, aunque también se pueden utilizar corchetes [] poniendo los valores dentro de ellos separados por comas , junto con un espacio en blanco.
- Un vector estará formado por el par clave/valor, estando separados ambos por : poniendo uno por línea, aunque también podemos utilizar {} poniendo cada uno de ellos dentro separados por comas , junto con un espacio en blanco.
- Se pueden utilizar caracteres de escape \ para representar caracteres especiales.
- Para incluir múltiples documentos, los separaremos por tres guiones seguidos — e indicando el fin de un documento con tres puntos seguidos …
Podrás encontrar más información sobre los documentos YAML en este enlace.
No obstante y como sabrás, existen otros formatos muy populares, extendidos y utilizados como JSON o XML, aunque existen algunas diferencias importantes entre JSON y YAML que ayuda a que YAML sea cada vez más usado.
Entre lo pros más destacables de YAML podríamos destacar:
- YAML admite comentarios, algo que JSON no.
Poder agregar comentarios a un documento puede resultar especialmente útil en determinadas circunstancias. - YAML admite también trabajar con tipos de datos complejos.
- Un documento YAML es más fácil de leer y por lo tanto, más sencillo de cambiar.
- Un documento YAML es más pequeño que un documento JSON.
A modo de ejemplo, un documento JSON de 348 bytes se podría quedar en 198 bytes en YAML.
Esto conlleva intrínsecamente varias mejoras adicionales.
Un menor tamaño implica un menor uso de ancho de banda y una transmisión y recepción más temprana.
En dispositivos pequeños tipo IoT y otros, puede ofrecer ventajas sobre otros tipos de documentos como los JSON. - YAML es un superconjunto de JSON, por lo que un parser de YAML puede parsear también un documento JSON.
- Dentro de un documento YAML podemos tener o mezclar un documento JSON.
- Un documento YAML podría contener más de un conjunto de datos YAML.
Entre los contras más destacable de YAML podríamos destacar:
- El parser de un documento JSON es más sencillo que el de un documento YAML.
- En intercambio de datos, la serialización de JSON es más adecuada que YAML.
- Algunos parsers de YAML no tienen un completo soporte a todas las características de YAML de acuerdo a la última especificación 1.2.
- La complejidad del parser de YAML y tareas de serialización no invita a utilizar YAML en sustitución de JSON.
Así que de acuerdo a los pros y contras que enumeraba, el uso de YAML es muy útil en ficheros de configuración, traducciones y similares, mientras que el uso de JSON lo es en datos serializados y utilizados por ejemplo en APIs.
Recordemos que YAML soporta comentarios, lo cuál hace que usar YAML en archivos de configuración adquiera especial relevancia.
Así que si lo que vamos a hacer es intercambiar datos, lo más adecuado es utilizar JSON, ya que casi con total seguridad, las ventajas que nos ofrece YAML no las vamos a aprovechar.
Así que si te estás planteando sustituir JSON por YAML de facto, no tiene sentido hacerlo.
Lo que sí tiene sentido es tener en cuenta las ventajas/desventajas de cada uno y utilizar el que nos interese de acuerdo a nuestras necesidades, pudiendo utilizar ambos dentro de nuestros desarrollos.
Hablando de rendimiento sobre la serialización de YAML y JSON, y a modo de ejemplo, citaré una tabla de Shannon Skipper con ejecuciones entre Ruby, JRuby y Rubinius.
Podrás acceder a esta información en este enlace.
En la información que comparte, la serialización con YAML viene a ser cerca de 15 veces mas lenta que la misma en JSON.
Aún y así, esto no significa que YAML no sea válido, simplemente que a veces puede no ser la opción más recomendable.
Podrás acceder a las especificaciones de YAML en este enlace
La especificación a YAML 1.2 la encontrarás en este enlace
Si aún y así no te queda claro cómo funciona YAML o tienes alguna duda, entonces te sugiero acceder a este enlace o a este otro enlace.
Algunas herramientas útiles para trabajar con YAML podrían ser las siguientes:
- Herramienta online para validar un documento YAML
http://www.yamllint.com/ - Herramienta online para comprobar el tamaño de un texto (válida para comparar un JSON y YAML equivalente)
http://bytesizematters.com/ - Convertidor de YAML a JSON
https://www.json2yaml.com/convert-yaml-to-json - Convertidor de JSON a YAML
https://www.json2yaml.com/ - YAML JavaScript parser
https://nodeca.github.io/js-yaml/ - JSON Editor Online
https://jsoneditoronline.org/
Happy Coding!
2 Responsesso far
Hey
Do checkout this link:
https://www.json2yaml.com/convert-yaml-to-json
Best for YAML to JSON
You can also use https://yamlonline.com/ for the yaml validator as well as yaml converter to json,csv,xml,base64 also for beautify and minify YAML.