Wie man YAML in JSON umwandelt [Python, PowerShell, Go]

Viele moderne Tools, insbesondere im Bereich der Konfigurationsverwaltung und der Infrastruktur als Code (IaC), verwenden JSON- oder YAML-Dateien zur Speicherung von Konfigurationsdaten. Wenn Sie Daten von YAML-Format in JSON-Format konvertieren müssen, dann ist dieser Artikel genau das Richtige für Sie.

In diesem Artikel lernen Sie verschiedene Möglichkeiten zur Konvertierung von YAML-Daten in das JSON-Format kennen, einschließlich Skripting in Python, PowerShell und Go.

Voraussetzungen

Wenn Sie die Beispiele in diesem Tutorial nachvollziehen möchten, stellen Sie sicher, dass Sie

  • A code editor. This article will use Visual Studio Code version 1.55.1. Feel free to use any code editor you want.
  • Um mit der Konvertierung von YAML zu JSON zu beginnen, benötigen Sie einen Beispiel-YAML-Inhalt. Kopieren Sie den folgenden Inhalt in eine neue Datei namens betriebssysteme.yml. Speichern Sie die YAML-Datei in Ihrem Arbeitsverzeichnis.
operating-systems.yml
Windows 10: 100
Windows Server 2019: 50
Windows Server 2022: 1
MacOS: 3
CentOS: 75
Photon: 12

Verwenden von Python zur Konvertierung von YAML zu JSON

Python ist eine ausgezeichnete Sprache zur Automatisierung. Aber wussten Sie, dass Sie die Fähigkeiten von Python erweitern und es verwenden können, um Dokumente von YAML in JSON zu konvertieren? Und Sie müssen nur wenige Schritte ausführen, um in kürzester Zeit YAML in JSON zu konvertieren.

Das Beispiel in diesem Abschnitt erfordert, dass Sie Python 3.9 und PIP installiert haben (die neueste Version zum Zeitpunkt dieser Schreibens ist 21.0.1).

Hinzufügen von YAML-Unterstützung zu Python

Python hat standardmäßig keine Unterstützung für YAML. Das bedeutet, dass Python YAML-Dokumente standardmäßig nicht lesen oder interpretieren kann. Um YAML-Unterstützung zu Python hinzuzufügen, müssen Sie zuerst das PyYAML-Modul installieren.

Um das PyYAML-Modul zu installieren, müssen Sie den pip-Befehl ausführen, der das Paketinstallationsprogramm für Python ist. Befolgen Sie dazu diese Schritte.

Zuerst öffnen Sie Ihren bevorzugten Befehlsinterpreter, wie die Eingabeaufforderung oder PowerShell. Der pip-Befehl sollte in beiden funktionieren. In diesem Beispiel wird PowerShell verwendet.

Führen Sie als Nächstes den folgenden Befehl in PowerShell aus. Dieser Befehl installiert das PyYAML-Modul.

pip install pyyaml

Wie im Screenshot unten zu sehen ist, hat pip die neueste Version von PyYAML installiert (zum Zeitpunkt dieses Schreibens 5.4.1).

Installing the PyYAML module

Das Konvertierungsskript schreiben

Jetzt, da Sie das erforderliche Modul (PyYAML) installiert haben, sind Sie bereit, Ihr Konvertierungsskript zu schreiben. Um das YAML-zu-JSON-Python-Skript zu erstellen, befolgen Sie diese Schritte.

1. Öffnen Sie Ihren Code-Editor und erstellen Sie eine neue Datei namens convert-os.py in Ihrem Arbeitsverzeichnis. Diese Datei ist Ihr Skript.

2. Kopieren Sie den folgenden Code und fügen Sie ihn in Ihre leere convert-os.py-Datei ein. Dieses Skript liest den YAML-Inhalt von operating-systems.yml, wandelt den Inhalt in das JSON-Format um und schreibt die JSON-Ausgabe in die Datei python_operating-systems.json.

## convert-os.py
## Importieren Sie die Module zum Umgang mit JSON & YAML
import yaml
import json

## Erstellen Sie eine Variable, um die zu importierenden Daten zu halten
os_list = {}

## Lesen Sie die YAML-Datei ein
with open("c:\temp\operating-systems.yml") as infile:
     # Marshallen Sie das YAML in die oben definierte Variable os_list = yaml.load(infile, Loader=yaml.FullLoader)     # Drucken Sie die Liste auf die Konsole. print(os_list)
 Open a file to write the JSON output. The 'w' makes the file writable
 with open("c:\temp\python_operating-systems.json", 'w') as outfile:
     # Marshallen Sie das JSON, indem Sie "indent" setzen, um die Datei lesbarer zu machen json.dump(os_list, outfile, indent=4) print("JSON-Datei geschrieben.")

3. Speichern Sie das convert-os.py-Skript.

Ausführen des Konvertierungsskripts

Nachdem Sie das Konvertierungsskript erstellt haben, ist es an der Zeit, es zu testen. Um das YAML-zu-JSON-Python-Skript auszuführen, gehen Sie wie folgt vor:

1. Öffnen Sie ein Terminalfenster. Dieser Artikel verwendet PowerShell, aber die Eingabeaufforderung (CMD) funktioniert genauso gut.

2. Kopieren Sie den folgenden Befehl, fügen Sie ihn in PowerShell ein und drücken Sie die Eingabetaste. Dieser Befehl führt das ausführbare Programm Python aus, um das Skript convert-os.py aus dem vorherigen Abschnitt aufzurufen.

python c:\temp\convert-os.py

Nachdem der Befehl ausgeführt wurde, sollten Sie eine ähnliche Ausgabe wie im Bild unten sehen. Wie Sie sehen können, hat der Befehl die JSON-Ausgabe auf dem Bildschirm angezeigt und dieselbe Ausgabe in der Datei c:\temp\python_operating-systems.json gespeichert.

Running the YAML to JSON conversion script using Python

3. Öffnen Sie schließlich die JSON-Datei namens python_operating-systems.json, die das convert-os.py Python-Skript erstellt haben sollte. Um die Datei in diesem Beispiel in Notepad zu öffnen, führen Sie den folgenden Befehl in PowerShell aus.

notepad C:\temp\python_operating-systems.json
Viewing the python_operating-systems.json file in notepad

Verwenden von PowerShell zum Konvertieren von YAML in JSON

PowerShell kann Textdateien bearbeiten und Objekte in mehrere Formate konvertieren, einschließlich JSON. Da PowerShell erweiterbar ist, können Sie PowerShell verwenden, um YAML in das JSON-Format mit dem richtigen Modul zu konvertieren.

Hinzufügen von YAML-Unterstützung zu PowerShell

PowerShell verfügt über integrierte Unterstützung zum Bearbeiten von JSON-Inhalten, jedoch nicht für YAML. Glücklicherweise gibt es ein Modul, das PowerShell erweitert, um YAML-Dateien zu unterstützen. Dieses Modul heißt PowerShell-yaml, und die neueste Version zum Zeitpunkt dieses Schreibens ist 0.4.2. Befolgen Sie diese Schritte, um das Modul zu installieren.

1. Öffnen Sie auf Ihrem Computer eine PowerShell-Sitzung.

2. Kopieren Sie den Befehl unten, fügen Sie ihn in PowerShell ein und drücken Sie die Eingabetaste. Dieser Befehl verwendet das Install-Module cmdlet, um das PowerShell-yaml-Modul zu installieren.

Install-Module PowerShell-yaml

3. Nach der Installation des Moduls werden zwei neue cmdlets in PowerShell als Teil des PowerShell-yaml-Moduls verfügbar sein. Diese neuen cmdlets sind:

ConvertFrom-Yaml – das cmdlet zum Konvertieren von YAML-Daten in eine Hash-Tabelle.

ConvertTo-Yaml – das cmdlet zum Konvertieren von Hash-Tabelle-Objekten in YAML-Daten.

Um zu bestätigen, dass beide cmdlets in PowerShell verfügbar sind, führen Sie den Befehl unten in PowerShell aus.

Get-Command -Module PowerShell-yaml

Wie Sie unten sehen können, hat das Get-Command cmdlet die cmdlets aus dem PowerShell-yaml-Modul aufgelistet.

Getting the PowerShell-yaml cmdlets

Schreiben des Konvertierungsskripts

Um das YAML-zu-JSON-Konvertierungsskript zu erstellen, befolgen Sie diese Anweisungen.

1. Öffnen Sie Ihren Code-Editor und erstellen Sie eine neue Datei namens convert-os.ps1 in Ihrem Arbeitsverzeichnis.

2. Kopieren Sie den folgenden Code und fügen Sie ihn in die leere Datei convert-os.ps1 ein. Der untenstehende Codeausschnitt liest die Datei operating-systems.yml und konvertiert sie in JSON. Nach der Konvertierung in JSON wird es dann in der Datei PowerShell_operating-systems.json gespeichert.

#convert-os.ps1
 #Lesen Sie die YAML-Datei mit Get-Content und konvertieren Sie die Daten mit ConvertFrom-Yaml in eine Hashtable. Die Variable $os_list speichert das Hashtable-Objekt.
 $os_list = (Get-Content -Path "C:\temp\operating-systems.yml" | ConvertFrom-Yaml)
 #Konvertieren Sie das Hashtable-Objekt in der Variablen $os_list in das JSON-Format mit ConvertTo-Json. Sobald es in JSON vorliegt, speichern Sie es in der Datei C:\temp\PowerShell_operating-systems.json mit Set-Content.
 Set-Content -Path "C:\temp\PowerShell_operating-systems.json" -Value ($os_list | ConvertTo-Json)

3. Speichern Sie die Datei convert-os.ps1.

Ausführen des Konvertierungsskripts

Jetzt, da Sie Ihr Konvertierungsskript erstellt haben, ist der nächste Schritt, es auszuführen, um YAML in JSON umzuwandeln. Um das PowerShell-Konvertierungsskript auszuführen, befolgen Sie diese Schritte.

  1. Öffnen Sie ein PowerShell-Fenster, wenn Sie noch keines geöffnet haben.

2. Kopieren Sie den Befehl unten, fügen Sie ihn in PowerShell ein und drücken Sie Enter. Dieser Befehl ruft das Skript convert-os.ps1 auf, das Sie im vorherigen Abschnitt erstellt haben.

c:\temp\convert-os.ps1

3. Nach Ausführung des Skripts öffnen Sie die JSON-Ausgabedatei C:\temp\PowerShell_operating-systems.json, die das Skript convert-os.ps1 im vorherigen Schritt erstellt hat. Führen Sie dazu den folgenden Befehl in PowerShell aus, um die PowerShell_operating-systems.json in Notepad zu öffnen.

notepad C:\temp\PowerShell_operating-systems.json
Viewing the content of the PowerShell_operating-systems.json file

Verwendung von Go zur Konvertierung von YAML in JSON

Python und PowerShell sind beide Hochsprachen. Die Verwendung von Hochsprachen erleichtert das Schreiben von Skripten, nimmt jedoch auch ein wenig Kontrolle weg. Auf der anderen Seite ist Go eine Niedrigsprache, was das Importieren von YAML-Daten komplexer macht.

Das Beispiel in diesem Abschnitt wird Go verwenden. Die neueste Version zum Zeitpunkt dieser Abfassung ist go1.16.3. Wenn Sie Go noch nicht haben, konsultieren Sie die Download- und Installationsseite, um es auf Ihrem Computer zu installieren.

Hinzufügen von YAML-Unterstützung zu Go

Wie PowerShell und Python gehört JSON-Unterstützung zu den Kernbibliotheken von Go, aber YAML nicht. Um YAML-Unterstützung in Go hinzuzufügen, müssen Sie zunächst das Paket YAML.v3 mithilfe des Befehls go get installieren. Um das Paket YAML.v3 zu installieren:

Zuerst öffnen Sie auf Ihrem Computer die Befehlszeile, die Sie verwenden möchten, z.B. die Eingabeaufforderung oder PowerShell. Dieses Beispiel verwendet PowerShell.

Als nächstes kopieren Sie den folgenden Befehl und führen ihn in PowerShell aus. Dieser Befehl lädt das Paket gopkg.in/yaml.v3 herunter und installiert es.

go get gopkg.in/yaml.v3
Installing the yaml.v3 package in Go

Erstellen des Konvertierungsskripts

Um das Go-Skript zur Konvertierung von YAML in JSON zu erstellen, befolgen Sie diese Anweisungen.

1. Öffnen Sie Ihren Code-Editor und erstellen Sie eine neue Datei namens convert-os.go in Ihrem Arbeitsverzeichnis.

2. Kopieren Sie den untenstehenden Code und fügen Sie ihn in die leere Datei convert-os.go ein. Der Code importiert die erforderlichen Pakete, definiert einige Speicherstrukturen, importiert die YAML-Datei und konvertiert sie in JSON, bevor er sie in eine JSON-Datei namens c:\temp\go_operating-systems.json schreibt.

// Dies gibt go an, welche Funktion geladen werden soll.
 package main
 // Pakete importieren:
 import (
  // JSON-Modul
     "encoding/json"
  // Zum Schreiben von Ausgaben auf den Bildschirm
     "fmt"
  // Zum Lesen und Schreiben von Dateien
     "io/ioutil"
 // YAML-Modul
     "gopkg.in/yaml.v3"
 )
 // Zwei "Structs" definieren, dies sind Datenstrukturen im Speicher und entsprechen
 // dem Format der YAML- und JSON-Dateien.
 type operatingSystems struct {
     Windows10         int yaml:"Windows 10"
     WindowsServer2019 int yaml:"Windows Server 2019"
     WindowsServer2022 int yaml:"Windows Server 2022"
     MacOS             int yaml:"MacOS"
     CentOS            int yaml:"CentOS"
     Photon            int yaml:"Photon"
 }
 type operatingSystemsjson struct {
     Windows10         int json:"Windows 10"
     WindowsServer2019 int json:"Windows Server 2019"
     WindowsServer2022 int json:"Windows Server 2022"
     MacOS             int json:"MacOS"
     CentOS            int json:"CentOS"
     Photon            int json:"Photon"
 }
 func main() {
   // Den Benutzer über den Start des Prozesses informieren
     fmt.Println("Parsing YAML file")
 // Den Pfad zur Eingabedatei definieren
 var fileName string = "c:\temp\operating-systems.yml"
 // Die YAML-Datei laden. Go erfordert Fehlerbehandlung für diesen Schritt.
 yamlFile, err := ioutil.ReadFile(fileName)
     if err != nil {
         fmt.Printf("Error reading YAML file: %s\n", err)
         return
     }
 // Die YAML-Daten in Ihre Struktur extrahieren
     var oses operatingSystems
     yaml.Unmarshal(yamlFile, &oses)
 // Die JSON-Struktur erstellen, unter Verwendung der Daten aus der YAML-Struktur
 var osesjson = operatingSystemsjson{
         Windows10:         oses.Windows10,
         WindowsServer2019: oses.WindowsServer2019,
         WindowsServer2022: oses.WindowsServer2022,
         MacOS:             oses.MacOS,
         CentOS:            oses.CentOS,
         Photon:            oses.Photon,
     }
 // Einen String im JSON-Format erstellen.
 jsonOutput, err := json.Marshal(osesjson)
 // Das Ergebnis auf dem Bildschirm ausgeben. Beachten Sie, dass %+v bedeutet, dass 
   // der Variablenname zusammen mit den Daten gedruckt wird. Deshalb gibt es
   // keine Leerzeichen in den Ausgabefeldnamen.
     fmt.Printf("Result: %+v\n", osesjson)
 // Die JSON-Datei schreiben
 err = ioutil.WriteFile("c:\temp\Go_operating-systems.json", jsonOutput, 0644)
 }

3. Speichern Sie die Datei convert-os.go.

Ausführen des Konvertierungsskripts

Zum Ausführen von Go-Skripts verwenden Sie den Befehl go run gefolgt vom Dateinamen des Skripts. Führen Sie zum Ausführen des YAML-zu-JSON-Konvertierungsskripts wie folgt fort.

1. Öffnen Sie auf Ihrem Computer die Befehlsshell, die Sie verwenden möchten. Unter Windows funktioniert go sowohl in der Eingabeaufforderung als auch in PowerShell. In diesem Beispiel wird PowerShell verwendet, um go auszuführen.

2. Sobald Sie in PowerShell sind, kopieren Sie den folgenden Befehl und führen Sie ihn in PowerShell aus. Dieser Befehl ruft den Befehl go run auf, um das Skript c:\temp\convert-os.go auszuführen.

go run c:\temp\convert-os.go
Running Convert-os Go script.

3. Nachdem das Skript ausgeführt wurde, öffnen Sie die Ausgabedatei C:\temp\Go_operating-systems.json, die das Skript convert-os.go im vorherigen Schritt erstellt hat. Dieses Beispiel öffnet die Go_operating-systems.json in Notepad.

Viewing the Go_operating-systems.json in notepad

Zusammenfassung

In diesem Artikel haben Sie gelernt, wie Sie YAML-Daten und -Dateien mithilfe von Skripts in Python, PowerShell und Go in JSON konvertieren. Jetzt, da Sie verschiedene Möglichkeiten kennen, YAML in JSON zu konvertieren, welche Methode werden Sie Ihrer Meinung nach häufiger verwenden?

Source:
https://adamtheautomator.com/yaml-to-json/