Introducción a YAML para principiantes

Si es un desarrollador que escribe API, probablemente se haya topado con YAML, aunque su principal herramienta de serialización podría ser JSON.

YAML tiene su propia sintaxis amigable y es un lenguaje útil para agregar a su arsenal de desarrollo.

Aprendamos los conceptos básicos de YAML.

Serialización de datos

Siempre que desee enviar una estructura de datos o un objeto a través de redes informáticas, por ejemplo, Internet, debe convertirlo en un formato especial para leerlo y almacenarlo. El proceso se conoce comúnmente como serialización y es de 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 sobre YAML, y al final del artículo, podrá trabajar en YAML y tener una introducción clara a YAML.

¿Qué es YAML y cómo me beneficia?

YAML es un formato de serialización de datos que significa YAML no es un lenguaje de marcado.

La principal ventaja de usar YAML es la legibilidad y escritura. Si tiene un archivo de configuración que debe ser más fácil de leer para los humanos, es mejor usar 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.

Otro beneficio de YAML es su compatibilidad con varios tipos de datos, como casos, matrices, diccionarios, listas y escalares. Tiene buen soporte para los lenguajes más populares como JavaScript, Python, Ruby, Java, etc.

YAML solo admite espacios, y distingue mayúsculas de minúsculas y espacios. Las pestañas no se aceptan universalmente. Un archivo YAML tiene la extensión .yaml.

Sintaxis básica de YAML

Cada YAML comienza con, lo que indica el inicio de un archivo YAML.

Al crear una API, estamos interesados ​​en una función proporcionada por YAML conocida como mapeo.

Los siguientes ejemplos muestran el ejemplo de mapeo en YAML.

---
name: James
boy: yes
GPA: 3.41

La sintaxis de mapeo es clave: valor. (Tenga en cuenta el espacio, es muy importante en YAML, a diferencia de JSON o XML.

YAML también admite tipos de datos como caracteres, cadenas, enteros, valores flotantes y colecciones como matrices, 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”

AGE: 16

El primer tipo de datos es un booleano, donde puede tener dos valores: verdadero o falso. El valor de GPA es de coma flotante. YAML también admite el tipo de datos nulo como lo tenemos para «Problemas». El valor de «Nombre» es una cadena que debe citarse entre comillas simples o dobles. YAML también admite cadenas de varias líneas y cadenas de varias líneas como una sola para facilitar la lectura.

Cadenas multilínea y de una sola línea

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

El símbolo > le permite escribir una cadena de una sola línea en varias líneas. La oración es en realidad una descripción de una sola línea, aunque tenemos varias líneas.

También podemos tener varias cadenas de líneas si usamos | símbolo como permitido:

About: |

 This is a multiline string

 And will be printed line wise.

Lista

Las listas son muy importantes en YAML.

A continuación se muestra un ejemplo de la lista.

---

- apple

- banana

- mango

A continuación se muestra la asignación de escalares a listas, lo cual es muy importante para la mayoría de los archivos de configuración.

---

Fruits:

 Apples

 Banana

 Guava 

Se requiere anidamiento para mapear escalar a lista. También podemos tener varias listas anidadas, como se muestra en el siguiente ejemplo.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Aquí los autos están anidados dentro de automóviles, y Hyundai está anidado dentro de autos. Este es un ejemplo de anidamiento múltiple. Podemos tener múltiples anidamientos tanto como queramos.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML también proporciona símbolos & y * como anclas y referencias al ancla para evitar la duplicación. Son esenciales en los archivos de configuración en marcos como Ruby on Rails para hacer que el archivo YAML sea más pequeño.

Vea el ejemplo a continuación

<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span>
    <span class="hljs-attr">name:</span> <span class="hljs-string">"John"
</span>    age: 18
profession: engineer

<< : * details

que es equivalente a:

profession: engineer

name: "John"

age: 18

YAML en Python

Python es compatible con YAML, incluidos algunos módulos como ruamel y pyyaml. Comience instalando pyyaml

pip instalar pyyaml

Para el tutorial, cree un archivo con el nombre detalles.yaml

name: "john"

age:18

gender: male

Crea otro archivo llamado feed.yaml con el siguiente contenido:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Comencemos leyendo el archivo detalles.yaml

import yaml

with open('details.yaml') as f:
    
    data = yaml.load(f, Loader=yaml.FullLoader)
    print(data)

Después de ejecutar el archivo detalles.py, obtenemos el siguiente resultado

 $ python details.py
{'name': "john", 'age': 18, 'gender': male}
import yaml

with open(r'feed.yaml') as file:
    # The FullLoader parameter handles the conversion from YAML
    # scalar values to Python the dictionary format
    fruits_list = yaml.load(file, Loader=yaml.FullLoader)

    print(fruits_list)

Escribir YAML en archivos en Python

import yaml

dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']},
{'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}]

with open(r'E:data.yaml', 'w') as file: #create a new yaml file 
    data = yaml.dump(dict_file, file)

Implementación de YAML en Node.js

Node.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 ejemplo.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Tenemos una biblioteca npm disponible para Node.js llamada js-yaml. Comencemos instalando el módulo por

npm install js-yaml

Luego usamos el módulo js-yaml en nuestro archivo.

const yaml = require('js-yaml'); //initialize js-yaml
const fs   = require('fs'); //initialize filestream

try {
  const result = yaml.load(fs.readFileSync('example.yml', 'utf8'));
  console.log(result);
} catch (e) {
  console.log(e); //catch exception
}

Conclusión

En los marcos de trabajo de programación modernos y las aplicaciones donde los datos se almacenan o distribuyen, YAML se está volviendo cada vez más común en los archivos de configuración. YAML tiene como objetivo muchas de las mismas aplicaciones de comunicación que el Lenguaje de marcado extensible (XML), pero tiene una sintaxis mínima que es deliberadamente diferente de XML.

Los archivos YAML se pueden crear para estructuras de datos fijas utilizando comandos de impresión que escriben tanto los datos como la decoración particular de YAML. Sin embargo, es preferible un emisor YAML dedicado para descargar varios datos jerárquicos o complejos. De manera similar, con las expresiones regulares, los archivos YAML básicos (por ejemplo, pares clave-valor) se analizan fácilmente.