Wprowadzenie do YAML dla początkujących

Jeśli jesteś programistą piszącym interfejsy API, prawdopodobnie natknąłeś się na YAML, mimo że Twoim głównym narzędziem do serializacji może być JSON.

YAML ma własną przyjazną składnię i jest przydatnym językiem, który można dodać do swojego arsenału programistycznego.

Nauczmy się podstaw YAML.

Serializacja danych

Ilekroć chcesz wysłać jakąś strukturę danych lub obiekt przez sieci komputerowe, na przykład Internet, musisz przekształcić je w specjalny format, aby je odczytać i zapisać. Proces ten jest powszechnie znany jako serializacja i ma ogromne znaczenie w sieci. Typowym przykładem użycia serializacji jest odczytywanie danych z baz danych i przesyłanie ich przez Internet.

Niektóre formacje serializacji obejmują JSON, YAML, XML.

W tym artykule mówimy o YAML, a na końcu artykułu będziesz mógł przejść przez YAML i mieć jasne wprowadzenie do YAML.

Co to jest YAML i jakie przynosi mi korzyści?

YAML to format serializacji danych, który oznacza YAML nie jest językiem znaczników.

Główną zaletą używania YAML jest czytelność i możliwość zapisu. Jeśli masz plik konfiguracyjny, który musi być łatwiejszy do odczytania dla ludzi, lepiej jest użyć YAML. YAML nie jest całkowitym zastąpieniem JSON, ponieważ JSON i XML też mają swoje miejsce; niemniej jednak warto uczyć się YAML.

Kolejną zaletą YAML jest obsługa różnych typów danych, takich jak przypadki, tablice, słowniki, listy i skalary. Ma dobrą obsługę najpopularniejszych języków, takich jak JavaScript, Python, Ruby, Java itp.

YAML obsługuje tylko spacje i uwzględnia zarówno wielkość liter, jak i spacje. Tabulatory nie są powszechnie akceptowane. Plik YAML ma rozszerzenie .yaml.

Podstawowa składnia YAML

Każdy YAML zaczyna się od — co oznacza początek pliku YAML.

Tworząc interfejs API, interesuje nas funkcja udostępniana przez YAML, znana jako mapowanie.

Poniższe przykłady pokazują przykład mapowania w YAML.

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

Składnia mapowania to klucz: wartość. (Zwróć uwagę na spację, jest to bardzo ważne w YAML, w przeciwieństwie do JSON lub XML.

YAML obsługuje również typy danych, takie jak znaki, łańcuchy, liczby całkowite, wartości zmiennoprzecinkowe i kolekcje, takie jak tablice, listy zbudowane z podstawowych typów danych.

Typy danych w YAML

Zobaczmy przykład YAML poniżej:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Pierwszy typ danych to boolean, gdzie może mieć dwie wartości: prawda lub fałsz. Wartość GPA jest zmiennoprzecinkowa. YAML obsługuje również typ danych null, tak jak w przypadku „Problemów”. Wartość „Nazwa” to ciąg znaków, który należy umieścić w cudzysłowach podwójnych lub pojedynczych. YAML obsługuje również ciąg wielowierszowy i ciąg wielowierszowy jako pojedynczy dla czytelności.

Łańcuchy wielowierszowe i jednowierszowe

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Symbol > umożliwia zapisanie pojedynczego ciągu wierszy w wielu wierszach. Zdanie jest w rzeczywistości opisem jednowierszowym, chociaż mamy wiele wierszy.

Możemy również mieć wiele ciągów linii, jeśli użyjemy | symbol jak dozwolony:

About: |

 This is a multiline string

 And will be printed line wise.

Lista

Listy są bardzo ważne w YAML.

Przykład listy znajduje się poniżej.

---

- apple

- banana

- mango

Mapowanie ze skalara na listy jest pokazane poniżej, co jest bardzo ważne dla większości plików konfiguracyjnych.

---

Fruits:

 Apples

 Banana

 Guava 

Zagnieżdżanie jest wymagane do mapowania skalara na listę. Możemy również mieć wiele zagnieżdżonych list, jak pokazano w poniższym przykładzie.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Tutaj samochody są zagnieżdżone w samochodach, a Hyundai jest zagnieżdżony w samochodach. To jest przykład wielokrotnego zagnieżdżania. Możemy mieć wiele zagnieżdżeń, ile tylko chcemy.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML zapewnia również symbole & i * jako kotwice i odniesienia do kotwicy, aby uniknąć powielania. Są one niezbędne w plikach konfiguracyjnych w frameworkach takich jak Ruby on Rails, aby zmniejszyć plik YAML.

Zobacz przykład poniżej

<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

co jest równoważne z:

profession: engineer

name: "John"

age: 18

YAML w Pythonie

Python obsługuje YAML, w tym niektóre moduły, takie jak ruamel i pyyaml. Zacznij od zainstalowania pyyaml

pip zainstaluj pyyaml

Na potrzeby samouczka utwórz plik o nazwie details.yaml

name: "john"

age:18

gender: male

Utwórz kolejny plik o nazwie feed.yaml o następującej zawartości:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Zacznijmy od przeczytania pliku details.yaml

import yaml

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

Po uruchomieniu pliku details.py otrzymujemy następujące dane wyjściowe

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

Zapisywanie YAML do plików w Pythonie

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)

Implementacja YAML w Node.js

Node.js to język przetwarzania po stronie serwera, a serializacja danych ma ogromne znaczenie w procesie programowania.

W naszym samouczku rozważmy następujący plik example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Mamy dostępną bibliotekę npm dla Node.js o nazwie js-yaml. Zacznijmy od zainstalowania modułu wg

npm install js-yaml

Następnie używamy modułu js-yaml w naszym pliku.

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
}

Wniosek

W nowoczesnych frameworkach programistycznych i aplikacjach, w których dane są przechowywane lub dystrybuowane, YAML staje się coraz bardziej powszechny w plikach konfiguracyjnych. YAML jest przeznaczony dla wielu takich samych aplikacji komunikacyjnych jak Extensible Markup Language (XML), ale ma minimalną składnię, która celowo różni się od XML.

Pliki YAML można tworzyć dla stałych struktur danych za pomocą poleceń drukowania, które zapisują zarówno dane, jak i określoną dekorację YAML. Jednak dedykowany emiter YAML jest preferowany do zrzucania różnych lub złożonych danych hierarchicznych. Podobnie w przypadku wyrażeń regularnych podstawowe pliki YAML (np. pary klucz-wartość) są łatwo analizowane.