YAML: Curso Intensivo

· 3 min de lectura
YAML: Curso Intensivo

YAML es un lenguaje de serialización de datos y es uno de los más utilizados por desarrolladores en internet, está enfocado en que sea fácil de leer y  usar

Puedes encontrar archivos YAML con dos extensiones .yml o .yaml y puedes hacer  básicamente todo lo que puedes con JSON o XML

En YAML todo se define con el formato clave: valor, por ejemplo:

nombre: Victor
apellido: Aguilar

Donde las palabras nombre, apellido  son las claves y Victor, Aguilar son los valores.

Otra cosa sumamente útil (que no existe en JSON por cierto) son los comentarios que al igual que en otros lenguajes, solo sirve como documentación, y no interfieren ni con la definición de datos ni con el funcionamiento, los comentarios empiezan con el carácter # y vamos a usarlos a lo largo de todo el post.

# Comentario de una linea
nombre: Vic  # Comentario en parte de una linea

En YAML podemos usar muchos tipos de datos como valor, a los tipos de datos, desde números, cadenas, booleanos, fechas, etc.

Números

Podemos usar valores enteros, decimales, octales o hexadecimales.

edad: 24        # entero
saldo: 500.5    # decimal
carnet: 0x12d4  # hexadecimal
plop: 023332    # octal
Cadenas

Las cadenas que definamos en YAML serán siempre unicode, y se pueden definir con o sin comillas (""), aunque en algunos casos es necesario (sobre todo cuando tienes que escapar caracteres).

posicion: Backend Developer
sobrenombre: "Victor Aguilar a.k.a \"vico\""

También puedes definir cadenas que ocupen múltiples líneas, para ello usamos el símbolo > si queremos que el formato no se preserve.

testamento: >
  A mi abuelita le dejo el play
  A mi hermanita menor le dejo la licuadora
  A mi perrito mi chanchito xD

# Al usar '>' esto será equivalente a:
testamento: A mi abuelita le dejo el play A mi hermanit ... chanchito xD

En cambio | hace que el formato se preserve, o sea que se respeten los saltos de línea y los espaciados.

testamento: |
  A mi abuelita le dejo el play
  A mi hermanita menor le dejo la licuadora
  A mi perrito mi chanchito xD
Fechas

Las fechas en YAML deben ser definidas usando el estándar ISO-8601 que nos ofrece una forma de definir fechas con el formato YYYY-mm-dd HH:MM:SS

nacimiento: "2000-01-01"
timestamp: "2021-07-31 12:00:00"
Nulos
nulo: ~
otro_nulo: null # esto no debe tener comillas
Boleanos

Estos valores que representan falso/verdadero pueden ser definidos como sigue:

verdadero1: true
verdadero2: On
falso1: false
falso2: Off
Los boleanos no deben tener comillas
Listas

Las listas son un conjunto de elementos, pueden definirse de dos maneras:

  • En una sola línea:
primos: [1, 3, 5,7]
frutas: ["fresa", "mango", "sandia"]
  • En múltiples líneas
primos: 
  - 1
  - 3
  - 5
  - 7
frutas: 
  - "fresa"
  - "mango"
  - "sandia"

También se pueden definir listas de objetos en lugar de solo escalares.

personas:
  - nombre: Benito
    apellido: Juarez
  - nombre: Alvaro
    apellido: Obregon
    
    
     

Diccionarios

Los diccionarios son usados para representar objetos con propiedades, estas propiedades, se pueden definir de dos maneras:

vehiculo: {marca: "Nissan", modelo: "Versa"}
vehiculo:
  marca: Nissan
  modelo: Versa

Ambas representan exactamente lo mismo.

Todos los tipos de valores expuestos hasta aqui se pueden combinar y anidar como más convenga.

Utilidades

YAML tiene algunas particularidades en su uso que pueden resultar muy útiles a la hora de definir datos.

Múltiples docs.

Podemos definir múltiples documentos en un solo archivo usando ---, esto se utiliza mucho en áreas como devops donde se quiere definir muchos recursos sin tener que escribir muchos archivos

---
server:
  os: linux
  mem: 16GB
  cpu: 2
---
server:
  os: windows
  mem: 32GB
  cpu: 1
resources.yml
Referencia

La referencia es útil cuando queremos reutilizar los valores de un objeto en otro.

dev: &dev
 support_email: support@vico.dev
 notifications: true
 hostname: localhost:8000
 
stage: *dev
Unión

Es útil cuando solo queremos utilizar las propiedades de otro objeto con la intención de sobreescribir alguna de ellas

dev: &dev
  support_email: support@vico.dev
  notifications: true
  hostname: localhost:8000
 
stage:
  <<: *dev
  hostname: stage.vico.dev
  env:
   - var: 1
   - var: 2
 

Finalmente puedes usar esta herramienta para ver si el YAML que defines es correcto y como es su equivalente en JSON

Transform YAML into JSON - Online YAML Tools
Free, quick and easy online utility that converts YAML to JSON in your browser. There are no ads or downloads. Simply enter YAML and get JSON. Created by developers for developers.