Einführung in YAML für Anfänger

Wenn Sie als Entwickler APIs schreiben, sind Sie wahrscheinlich auf YAML gestoßen, obwohl Ihr primäres Serialisierungstool JSON sein könnte.

YAML hat seine eigene benutzerfreundliche Syntax und ist eine praktische Sprache, die Sie Ihrem Entwicklungsarsenal hinzufügen können.

Lassen Sie uns die Grundlagen von YAML lernen.

Datenserialisierung

Wann immer Sie eine Datenstruktur oder ein Objekt über Computernetzwerke senden möchten, sagen wir das Internet, müssen Sie es in ein spezielles Format umwandeln, um es lesen und speichern zu können. Der Vorgang wird allgemein als Serialisierung bezeichnet und ist im Web von enormer Bedeutung. Ein häufiges Anwendungsbeispiel für die Serialisierung ist das Lesen von Daten aus Datenbanken und deren Übertragung über das Internet.

Einige Serialisierungsformate umfassen JSON, YAML, XML.

In diesem Artikel sprechen wir über YAML, und am Ende des Artikels können Sie sich durch YAM arbeiten und erhalten eine klare Einführung in YAML.

Was ist YAML und welche Vorteile habe ich davon?

YAML ist ein Datenserialisierungsformat, das für YAML ain’t Markup Language steht.

Der Hauptvorteil der Verwendung von YAML ist die Lesbarkeit und Beschreibbarkeit. Wenn Sie eine Konfigurationsdatei haben, die für Menschen leichter lesbar sein muss, ist es besser, YAML zu verwenden. YAML ist kein vollständiger Ersatz für JSON, da auch JSON und XML ihre Berechtigung haben; Trotzdem ist es nützlich, YAML zu lernen.

Ein weiterer Vorteil von YAML ist die Unterstützung verschiedener Datentypen wie Fälle, Arrays, Wörterbücher, Listen und Skalare. Es bietet gute Unterstützung für die gängigsten Sprachen wie JavaScript, Python, Ruby, Java usw.

YAML unterstützt nur Leerzeichen und unterscheidet sowohl zwischen Groß- und Kleinschreibung als auch zwischen Leerzeichen. Tabulatoren werden nicht überall akzeptiert. Eine YAML-Datei hat die Erweiterung .yaml.

Grundlegende YAML-Syntax

Jedes YAML beginnt mit — was den Anfang einer YAML-Datei bezeichnet.

Beim Erstellen einer API interessieren wir uns für eine von YAML bereitgestellte Funktion, die als Mapping bekannt ist.

Die folgenden Beispiele zeigen das Beispiel der Zuordnung in YAML.

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

Die Zuordnungssyntax ist Schlüssel: Wert. (Beachten Sie das Leerzeichen, es ist sehr wichtig in YAML, im Gegensatz zu JSON oder XML.

YAML unterstützt auch Datentypen wie Zeichen, Zeichenfolgen, Ganzzahlen, Gleitkommawerte und Sammlungen wie Arrays, Listen, die aus grundlegenden Datentypen aufgebaut sind.

Datentypen in YAML

Sehen wir uns das Beispiel einer YAML-Datei unten an:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Der erste Datentyp ist ein boolescher Wert, der zwei Werte haben kann: wahr oder falsch. Der Wert von GPA ist ein Fließkommawert. YAML unterstützt auch den Null-Datentyp, wie wir ihn für „Issues“ haben. Der Wert von „Name“ ist eine Zeichenfolge, die in doppelte oder einfache Anführungszeichen gesetzt werden muss. YAML unterstützt auch mehrzeilige Zeichenfolgen und mehrzeilige Zeichenfolgen als einzelne für die Lesbarkeit.

Mehrzeilige und einzeilige Zeichenfolgen

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Mit dem Symbol > können Sie eine einzelne Zeichenfolge in mehrere Zeilen schreiben. Der Satz ist eigentlich eine einzeilige Beschreibung, obwohl wir mehrere Zeilen haben.

Wir können auch mehrere Zeilenzeichenfolgen haben, wenn wir das | verwenden Symbol wie erlaubt:

About: |

 This is a multiline string

 And will be printed line wise.

Aufführen

Listen sind in YAML sehr wichtig.

Ein Beispiel für die Liste ist unten angegeben.

---

- apple

- banana

- mango

Die Zuordnung von Skalar zu Listen wird unten gezeigt, was für die meisten Konfigurationsdateien sehr wichtig ist.

---

Fruits:

 Apples

 Banana

 Guava 

Verschachtelung ist für die Zuordnung von Skalar zu Liste erforderlich. Wir können auch mehrere verschachtelte Listen haben, wie im folgenden Beispiel gezeigt.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Hier sind Autos in Autos verschachtelt, und Hyundai ist in Autos verschachtelt. Dies ist ein Beispiel für Mehrfachverschachtelung. Wir können so viele Verschachtelungen haben, wie wir wollen.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML stellt auch &- und *-Symbole als Anker und Verweise auf den Anker bereit, um Duplikate zu vermeiden. Sie sind in Konfigurationsdateien in Frameworks wie Ruby on Rails unerlässlich, um die YAML-Datei kleiner zu machen.

Siehe das Beispiel unten

<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

was äquivalent ist zu:

profession: engineer

name: "John"

age: 18

YAML in Python

Python unterstützt YAML, einschließlich einiger Module wie ruamel und pyyaml. Beginnen Sie mit der Installation von pyyaml

pip installiere pyyaml

Erstellen Sie für das Tutorial eine Datei mit dem Namen details.yaml

name: "john"

age:18

gender: male

Erstellen Sie eine weitere Datei namens „feed.yaml“ mit folgendem Inhalt:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Beginnen wir mit dem Lesen der Datei details.yaml

import yaml

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

Nach dem Ausführen der Datei details.py erhalten wir die folgende Ausgabe

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

Schreiben von YAML in Dateien in 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)

YAML-Implementierung in Node.js

Node.js ist eine serverseitige Verarbeitungssprache, und die Datenserialisierung ist im Entwicklungsprozess von enormer Bedeutung.

Betrachten wir für unser Tutorial die folgende Datei example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Wir haben eine npm-Bibliothek namens Node.js verfügbar js-yaml. Beginnen wir mit der Installation des Moduls von

npm install js-yaml

Wir verwenden dann das Modul js-yaml in unserer Datei.

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
}

Fazit

In modernen Programmierframeworks und Anwendungen, in denen Daten gespeichert oder verteilt werden, wird YAML in Konfigurationsdateien immer häufiger verwendet. YAML zielt auf viele der gleichen Kommunikationsanwendungen ab wie XML (Extensible Markup Language), hat aber eine minimale Syntax, die sich bewusst von XML unterscheidet.

YAML-Dateien können für feste Datenstrukturen mit Druckbefehlen erstellt werden, die sowohl die Daten als auch die besondere Dekoration der YAML schreiben. Ein dedizierter YAML-Emitter ist jedoch vorzuziehen, um verschiedene oder komplexe hierarchische Daten auszugeben. In ähnlicher Weise lassen sich mit regulären Ausdrücken einfache YAML-Dateien (z. B. Schlüssel-Wert-Paare) leicht analysieren.