Si usted es un desarrollador que escribe APIs, probablemente se haya topado con YAML aunque su herramienta de serialización principal sea JSON
YAML tiene su propia sintaxis amigable, y es un lenguaje práctico para añadir a su arsenal de desarrollo
Aprendamos lo básico de YAML
Serialización de datos
Siempre que quiera enviar alguna estructura de datos o un objeto a través de redes informáticas, por ejemplo Internet, tendrá que convertirlo a un formato especial para poder leerlo y almacenarlo. Este proceso se conoce comúnmente como serialización y tiene una enorme importancia en la web. Un ejemplo de uso común de la serialización es cuando se leen datos de bases de datos y se transfieren a través de la web
Algunas formaciones de serialización incluyen JSON, YAML, XML
En este artículo, hablamos de YAML, y al final del artículo, usted será capaz de trabajar su camino a través de YAMLy tener una clara introducción a YAML
¿Qué es YAML y en qué me beneficia?
YAML es un formato de serialización de datos cuyos siglas significan YAML no es un lenguaje de marcado
La principal ventaja de utilizar YAML es su legibilidad y capacidad de escritura. Si tiene un archivo de configuración que debe ser más fácil de leer para los humanos, es mejor que utilice YAML. YAML no es una sustitución completa de JSON ya que JSON y XML también tienen su lugar; sin embargo, es útil aprender YAML
Otra ventaja de YAML es su soporte de varios tipos de datos como casos, matrices, diccionarios, listas y escalares. Tiene un buen soporte para los lenguajes más populares como JavaScript, Python, Ruby, Java, etc
YAML sólo admite espacios, y es sensible tanto a mayúsculas como a minúsculas. Los tabuladores no se aceptan universalmente. Un archivo YAML tiene extensión .yaml
Sintaxis básica de YAML
Todo YAML comienza con ---
que denota el inicio de un archivo YAML
Al crear una API, nos interesa una característica que proporciona YAML conocida como mapeo
Los siguientes ejemplos muestran el ejemplo de mapeo en YAML
–
--
nombre: James
chico: sí
GPA
: 3.41
La sintaxis de mapeo es clave: valor. (Observe el espacio, es muy crucial en YAML, a diferencia de JSON o XML
YAML también soporta tipos de datos como caracteres, cadenas, enteros, valores flotantes, y colecciones como arrays, listas que se construyen a partir de tipos de datos básicos
Tipos de datos en YAML
Veamos el ejemplo de un YAML a continuación
---
MALE: FALSE
GPA: 3.61
ISSUES: NULL
NAME: "BIGYAN"
EDAD: 16
El primer tipo de datos es un booleano, donde puede tener dos valores: verdadero o falso. El valor de PAM es de coma flotante. YAML también admite el tipo de datos null, como tenemos para "Asuntos El valor de "Nombre" es una cadena que debe entrecomillarse dentro de comillas dobles o simples. YAML también admite cadenas multilínea y cadenas de varias líneas como una sola para facilitar la lectura
Cadenas multilínea y de una sola línea
–
--
Acerca de: >
Hola, soy Ryan
De Alabama y me gusta
Jugar al fútbol
El símbolo <i>></i>
le permite escribir una cadena de una sola línea en varias líneas. La frase es en realidad una descripción de una sola línea aunque tengamos múltiples líneas
También podemos tener cadenas de múltiples líneas si utilizamos el símbolo |
como se permite
Acerca de:
|
Esta es una cadena de varias líneas
Y se imprimirá por líneas
Lista
Las listas son muy importantes en YAML
A continuación se ofrece un ejemplo de lista
–
--
–
manzana
–
plátano
–
mango
A continuación se muestra el mapeo de escalares a listas, que es muy importante para la mayoría de los archivos de configuración
–
--
Frutas:
Manzanas
Plátano
Guayaba
El anidamiento es necesario para el mapeo de escalar a lista. También podemos tener varias listas anidadas, como se muestra en el siguiente ejemplo
Automóviles
:
Coche:
Hyundai
Volkswagen
Ford
Aquí automóviles está anidado dentro de automóviles, y Hyundai está anidado dentro de automóviles. Este es un ejemplo de anidado múltiple. Podemos tener anidado múltiple tanto como queramos
Temas:
Ingeniería:
Ingeniería mecánica:
Diseño y fabricación
Automóvil
Control y diseño
Ingeniería civil:
Ingeniería estructural
Energía hidroeléctrica
Artes:
Medieval
Moderna
Pintura
YAML también proporciona símbolos &
y *
como anclas y referencias al ancla para evitar duplicaciones. Son esenciales en los archivos de configuración en frameworks como Ruby on Rails para hacer el archivo YAML más pequeño
Vea el siguiente ejemplo
<span class="hljs-attr">detalles:</span> <span class="hljs-meta">&detalles</span>
<span class="hljs-attr">nombre:</span> <span class="hljs-string">"Juan"</span>
edad: 18
profesión: ingeniero
<< :
*
detalles
que es equivalente a
profesión: ingeniero
nombre: "Juan"
edad: 18
YAML en Python
Python soporta YAML, incluyendo algunos módulos como ruamel y pyyaml. Empiece instalando pyyaml
pip install pyyaml
Para el tutorial, cree un archivo con el nombre details.yaml
nombre: "juan"
edad:18
sexo: masculino
Cree otro archivo con el nombre feed
.yaml con el siguiente contenido
deportes:
fútbol
baloncesto
cricket
béisbol
---
países:
Brasil
Lituania
Australia
EE.UU
Empecemos por leer el archivo details.yaml
import yaml
with open('detalles.yaml') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)
Tras ejecutar el archivo details.py, obtenemos la siguiente salida
$ python detalles.py
{'nombre': "juan", 'edad': 18, 'sexo': masculino}
import yaml
with open(r'feed.yaml') as file:
# El parámetro FullLoader se encarga de la conversión de valores escalares YAML
# al formato diccionario Python
fruits_list = yaml.load(file, Loader=yaml.FullLoader)
print(fruits_list)
Escribir YAML en archivos en Python
import yaml
dict_file = [{'deportes' : ['hockey', 'rugby', 'tenis', 'ping pong', 'fútbol', 'bádminton']},
{'países' : ['Jamaica', 'Inglaterra', 'Nepal', 'Países Bajos', 'Sudáfrica', 'Bolivia', 'Portugal']}]
with open(r'E:\data.yaml', 'w') as file: #crea un nuevo archivo yaml
data = yaml.dump(dict_file, file)
Implementación de YAML en Node.js
Nodo.js es un lenguaje de procesamiento del lado del servidor, y la serialización de datos es de enorme importancia en el proceso de desarrollo
Para nuestro tutorial, consideremos el siguiente archivo example.yaml
nombre:Juan
edad:18
Aficiones:
Afición1:Fútbol
Afición2:Baloncesto
Afición3:Hockey
Trabajo:
-Administrador del sistema
-Programador
Tenemos una biblioteca npm disponible para Node.js llamada js-yaml. Empecemos por instalar el módulo mediante
npm install j
s-yaml
A continuación, utilizamos el módulo js-yaml
en nuestro archivo
const yaml = require('js-yaml'); //inicializar js-yaml
const fs = require('fs'); //inicializar filestream
try {
const result = yaml.load(fs.readFileSync('ejemplo.yml', 'utf8'));
console.log(result);
} catch (e) {
console.log(e); //catch exception
}
Conclusión
En los marcos de programación y aplicaciones modernos en los que se almacenan o distribuyen datos, YAML es cada vez más habitual en los archivos de configuración. YAML se dirige a muchas de las mismas aplicaciones de comunicación que el lenguaje de marcado extensible (XML), pero tiene una sintaxis mínima que difiere deliberadamente de XML
Los archivos YAML pueden crearse para estructuras de datos fijas mediante comandos de impresión que escriben tanto los datos como la decoración particular de YAML. Sin embargo, es preferible utilizar un emisor de YAML específico para volcar datos jerárquicos diversos o complejos. Del mismo modo, con expresiones regulares, los archivos YAML básicos (por ejemplo, pares clave-valor) se analizan fácilmente.