Introdução ao YAML para iniciantes

Se você é um desenvolvedor que escreve APIs, provavelmente já se deparou com YAML, mesmo que sua ferramenta de serialização primária seja JSON.

YAML tem sua própria sintaxe amigável e é uma linguagem útil para adicionar ao seu arsenal de desenvolvimento.

Vamos aprender o básico de YAML.

Serialização de dados

Sempre que você deseja enviar alguma estrutura de dados ou um objeto através de redes de computadores, digamos a Internet, é necessário transformá-lo em um formato especial para lê-lo e armazená-lo. O processo é comumente conhecido como serialização e é de enorme importância na web. Um exemplo de uso comum de serialização é ao ler dados de bancos de dados e transferi-los pela web.

Algumas formações de serialização incluem JSON, YAML, XML.

Neste artigo, falamos sobre YAML e, no final do artigo, você poderá trabalhar em YAML e ter uma introdução clara a YAML.

O que é YAML e como isso me beneficia?

YAML é um formato de serialização de dados que significa YAML não é linguagem de marcação.

A principal vantagem de usar YAML é a legibilidade e capacidade de escrita. Se você tiver um arquivo de configuração que precise ser mais fácil de ser lido por humanos, é melhor usar o YAML. YAML não é uma substituição completa de JSON, pois JSON e XML também têm seus lugares; no entanto, é útil aprender YAML.

  8 tradutores de inglês para código Morse e vice-versa que você pode usar

Outro benefício do YAML é o suporte a vários tipos de dados, como casos, matrizes, dicionários, listas e escalares. Tem bom suporte para as linguagens mais populares como JavaScript, Python, Ruby, Java, etc.

O YAML suporta apenas espaços e diferencia maiúsculas de minúsculas e também de espaço. As guias não são aceitas universalmente. Um arquivo YAML tem a extensão .yaml.

Sintaxe YAML básica

Todo YAML começa com — que denota o início de um arquivo YAML.

Ao criar uma API, estamos interessados ​​em um recurso fornecido pelo YAML conhecido como mapeamento.

Os exemplos a seguir mostram o exemplo de mapeamento em YAML.

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

A sintaxe de mapeamento é key: value. (Observe o espaço, é muito importante em YAML, ao contrário de JSON ou XML.

YAML também suporta tipos de dados como caracteres, strings, inteiros, valores flutuantes e coleções como arrays, listas que são construídas a partir de tipos básicos de dados.

Tipos de dados em YAML

Vejamos o exemplo de um YAML abaixo:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

O primeiro tipo de dado é um booleano, onde pode ter dois valores: true ou false. O valor de GPA é ponto flutuante. O YAML também suporta o tipo de dados nulo como temos para “Issues”. O valor de “Nome” é uma string que precisa ser colocada entre aspas duplas ou simples. O YAML também oferece suporte a strings de várias linhas e strings de várias linhas como uma única para facilitar a leitura.

Strings de várias linhas e de uma linha

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

O símbolo > permite escrever uma string de uma única linha em várias linhas. A frase é, na verdade, uma descrição de uma única linha, embora tenhamos várias linhas.

  Como ver como uma loja está ocupada agora com o Google Maps

Também podemos ter várias strings de linha se usarmos o | símbolo como permitido:

About: |

 This is a multiline string

 And will be printed line wise.

Lista

Listas são muito importantes em YAML.

Um exemplo da lista é dado abaixo.

---

- apple

- banana

- mango

O mapeamento de escalar para listas é mostrado abaixo, o que é muito importante para a maioria dos arquivos de configuração.

---

Fruits:

 Apples

 Banana

 Guava 

O aninhamento é necessário para mapear o escalar para a lista. Também podemos ter várias listas aninhadas, conforme mostrado no exemplo abaixo.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Aqui, os carros estão aninhados dentro de automóveis e a Hyundai está aninhada dentro de carros. Este é um exemplo de aninhamento múltiplo. Podemos ter vários aninhamentos o quanto quisermos.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML também fornece os símbolos & e * como âncoras e referências à âncora para evitar duplicação. Eles são essenciais em arquivos de configuração em frameworks como Ruby on Rails para tornar o arquivo YAML menor.

Veja o exemplo abaixo

<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 é equivalente a:

profession: engineer

name: "John"

age: 18

YAML em Python

Python suporta YAML, incluindo alguns módulos como ruamel e pyyaml. Comece instalando o pyyaml

pip instalar pyyaml

Para o tutorial, crie um arquivo com o nome details.yaml

name: "john"

age:18

gender: male

Crie outro arquivo chamado feed.yaml com o seguinte conteúdo:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Vamos começar lendo o arquivo details.yaml

import yaml

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

Depois de executar o arquivo details.py, obtemos a seguinte saída

 $ 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)

Escrevendo YAML para arquivos em 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)

Implementação de YAML em Node.js

Node.js é uma linguagem de processamento do lado do servidor, e a serialização de dados é de enorme importância no processo de desenvolvimento.

  Monitore quais alimentos você queimou com seu nível de atividade diária

Para nosso tutorial, vamos considerar o seguinte arquivo example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Temos uma biblioteca npm disponível para Node.js chamada js-yaml. Vamos começar instalando o módulo por

npm install js-yaml

Em seguida, usamos o módulo js-yaml em nosso arquivo.

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
}

Conclusão

Em estruturas e aplicativos de programação modernos em que os dados são armazenados ou distribuídos, o YAML está se tornando cada vez mais comum em arquivos de configuração. O YAML destina-se a muitos dos mesmos aplicativos de comunicação que o Extensible Markup Language (XML), mas possui uma sintaxe mínima que é deliberadamente diferente do XML.

Os arquivos YAML podem ser criados para estruturas de dados fixas usando comandos de impressão que gravam os dados e a decoração específica do YAML. No entanto, um emissor YAML dedicado é preferível para descarregar dados hierárquicos diversos ou complexos. Da mesma forma, com expressões regulares, arquivos YAML básicos (por exemplo, pares chave-valor) são prontamente analisados.