Was ist der Unterschied zwischen YAML und JSON?

YAML und JSON sind zwei Formate zur Serialisierung von Daten, die einen für Menschen lesbaren Datenaustauschmechanismus bieten. Sie formatieren Daten in einer standardisierten Weise für den Austausch zwischen Softwareanwendungen, ihr Text ist auch für Menschen lesbar. Beide stellen Daten als Schlüssel-Wert-Paare dar. JSON unterstützt Datenobjekte als Werte, während YAML dies nicht tut. YAML unterstützt jedoch mehr Datentypen und ist näher an der natürlichen Sprache, um Entwickler zu unterstützen.

Mehr über JSON erfahren »

Datendarstellung: YAML vs. JSON

Das Aussehen und die Syntax von JSON und YAML sind ähnlich, aber leicht unterschiedlich.

Auf den ersten Blick erscheint das JSON-Format in seiner Datendarstellung maschinenähnlicher als YAML. Eine JSON-Nachricht enthält diese Symbole:

  • Geschweifte Klammern für Objekte
  • Doppelpunkte zur Trennung von Schlüssel-Wert-Paaren
  • Eckige Klammern für Arrays 
  • Anführungszeichen zum Einschließen von Zeichenketten

JSON wurde aus einer kleinen Teilmenge von JavaScript entwickelt. Die Syntax lässt JSON-Dokumente also ähnlich wie Programmiercode aussehen.
 

Im Gegensatz zu JSON sieht das YAML-Format eher so aus, wie man strukturierte Daten auf Papier niederschreiben würde. Es wurde speziell entwickelt, um für Menschen leichter lesbar zu sein. Es verwendet die folgenden Elemente:

  • Einrückung zur Darstellung von Objekten 
  • Doppelpunkte zur Trennung von Schlüssel-Wert-Paaren
  • Bindestriche für Arrays
  • Rautezeichen zur Kennzeichnung eines Kommentars

YAML wurde ursprünglich zur Vereinfachung von XML entwickelt.

Beispiele für Dokumente: YAML vs. JSON

Hier sehen Sie Beispiele, wie ein Dokument mit den Produktdaten eines Hemdes in YAML und JSON aussehen könnte.

YAML

JSON

type: T-Shirt

price: 20.00

sizes:

  • S
  • M
  • L

   reviews: # Hinweis zu Bewertungen

  • username: user1

         rating: 4

         created_at: 2023-04-19T12:30:00Z

  • username: user2

         rating: 5

         created_at: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "T-Shirt",

    "price": 20.00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

Hauptunterschiede: YAML vs. JSON

Aufgrund der Syntax von YAML gelten YAML-Dateien als einfacher zu lesen, zu verstehen und zu schreiben als eine JSON-Dateien, insbesondere für Nicht-Entwickler. Als Nächstes werden wir weitere wichtige Unterschiede erörtern.

Datentypen

Das JSON-Format unterstützt die folgenden Datentypen:

  • Nummer
  • Boolesch
  • Null
  • String
  • Array
  • Objekt (Sammlung verschachtelter Schlüssel-Wert-Paare)

Das YAML-Format unterstützt alle nativen Datentypen jeder dynamischen Programmiersprache. Es unterstützt beispielsweise Sammlungen von verschachtelten Daten, die aus Sequenzen (Listen), Skalaren (wie Zahlen und Strings) und Mappings (Schlüssel-Wert-Paaren) bestehen. Mit dieser Unterstützung können Sie komplexere Datenstrukturen erstellen. 

Integrierter Support

JSON wird häufig in Kombination mit vielen verschiedenen Programmiersprachen verwendet. So bietet JavaScript beispielsweise eine integrierte Unterstützung für das Parsen von JSON. Die Python-Standardbibliothek enthält auch JSON, ebenso ist eine JSON-Bibliothek in PHP 5.2 integriert. Auch über 50 andere beliebte Sprachen unterstützen JSON durch verschiedene Pakete und Bibliotheken.

Im Gegensatz dazu gibt es in keiner gängigen Sprache eine integrierte Unterstützung für YAML. Stattdessen müssen Entwickler Bibliotheken installieren und verwenden. Zwei beliebte YAML-Parser sind PyYAML für Python und LibYAML für C. 

Versionierung

Sie können sowohl JSON als auch YAML über Versionierungssoftware wie Git versionieren. Es gilt jedoch als einfacher, Änderungen in YAML-Dateien zwischen den Versionen zu überprüfen und nachzuvollziehen.

Kommentare

Im JSON-Datenformat gibt es keine Unterstützung für Kommentare. Um dies zu umgehen, müssen die Entwickler ein Kommentar-Schlüssel-Wert-Paar definieren.

In einer YAML-Datei folgen die Kommentare auf ein Raute-Symbol.

Wann ist YAML zu verwenden vs. JSON

Dank der weit verbreiteten Unterstützung und Integration von JavaScript ist JSON für die meisten Anwendungsfälle ein beliebteres Daten-Serialisierungsformat als YAML. JSON wird häufig in verteilter Softwarekommunikation, Webanwendungen, Konfigurationsdateien und APIs verwendet.

Auch wenn YAML aufgrund der Datentypisierung und des menschenlesbaren Formats die bessere Wahl zu sein scheint, wird JSON in der Regel aus Gründen der Kompatibilität bevorzugt. Dies liegt daran, dass viele Anwendungen und Services bereits das JSON-Datenformat analysieren.

Andererseits hat sich YAML aufgrund seiner Lesbarkeit und der Unterstützung von Kommentaren in bestimmten Bereichen der Informatik stark durchgesetzt. YAML ist das primäre Datenformat für Konfigurationsdateien in vielen Automatisierungs-, DevOps- und Infrastructure as Code (IaC)-Tools und -Services. YAML wird zum Beispiel häufig in Docker- und Kubernetes-Dateien verwendet.

YAML wird auch zum Schreiben von Konfigurationsdateien in diesen Amazon Web Services (AWS)-Angeboten verwendet: AWS CloudFormation, AWS Serverless Application Model (AWS SAM) und AWS CodeBuild.

Zusammenfassung der Unterschiede: YAML vs. JSON

 

JSON

YAML

Wie lautet es?

Ein Daten-Serialisierungsformat zum Austausch strukturierter Daten zwischen Softwareanwendungen und Diensten. Die Anwendung hat Vorrang vor der menschlichen Nutzung. 

Ein Daten-Serialisierungsformat zum Austausch strukturierter Daten zwischen Softwareanwendungen und Diensten. Die Nutzung durch den Menschen hat Vorrang vor der Nutzung durch die Anwendung.

Hauptanwendungsfälle

Weit verbreitet über Plattformen, Sprachen, verteilte Softwarekommunikation, Webanwendungen, Konfigurationsdateien und APIs.

Konfigurationsdateien in vielen Automatisierungs-, DevOps- und Infrastructure as Code (IaC)-Tools und -Services.

Lesbarkeit

Einfach.

Am einfachsten.

Datentypen

Zahl, Boolesche, Null, String, Array und Objekt.

Unterstützt alle Datentypen durch Sammlungen von verschachtelten Daten, die Sequenzen, Skalare und Mappings umfassen.

Unterstützt Kommentare

Nein.

Ja.

Unterstützt Datenobjekte als Werte

Ja.

Nein.

Versioning

Ja, aber es ist nicht so einfach, die Unterschiede zwischen den einzelnen Versionen auf einen Blick zu erkennen und zu erfassen.

Ja, und es ist einfach zu scannen und die Unterschiede zwischen den Versionen auf einen Blick zu erkennen.

Wie kann AWS Ihre YAML- und JSON-Anforderungen unterstützen?

Alle AWS-Datenintegrationsdienste können JSON-Dateien verarbeiten. Hier sind drei relevante AWS-Services:

  • AWS Glue ist ein Serverless-Datenintegrationsservice. Sie können AWS Glue verwenden, um Daten für Analysen, Machine Learning und Anwendungsentwicklung zu ermitteln, aufzubereiten und zu kombinieren.
  • Amazon Simple Queue Service (Amazon SQS) ist ein vollständig verwalteter Warteschlangendienst für Nachrichten. Sie können damit Nachrichten zwischen Softwarekomponenten in beliebigem Umfang senden, speichern und empfangen. Amazon-SQS-Nachrichten enthalten bis zu 256 KB an Textdaten, einschließlich XML, JSON und unformatiertem Text.
  • Amazon DocumentDB (mit MongoDB-Kompatibilität) ist eine vollständig verwaltete native JSON-Dokumentdatenbank. Amazon DocumentDB macht den Betrieb kritischer Dokumenten-Workloads in praktisch jeder Größenordnung einfach und kostengünstig, ohne dass die Infrastruktur verwaltet werden muss.

In ähnlicher Weise unterstützen die Entwicklertools in AWS YAML-Dateien in mehreren Bereitstellungsservices. Hier sind zwei Beispiele:

  • Mit AWS Step Functions können Sie ausfallsichere Serverless-Workflows mit AWS-Services wie AWS Lambda, Amazon Simple Notification Service (Amazon SNS) und Amazon DynamoDB erstellen. Step Functions unterstützt auch die Definition von YAML-Zustandsautomaten. Dadurch ist es möglich, Workflows in derselben Sprache wie Ihre Infrastructure as Code (IaC) zu definieren.
  • AWS App2Container ist ein Befehlszeilentool zum Migrieren und Modernisieren von Java- und .NET-Webanwendungen in das Container-Format. Es generiert YAML-Dateien für Aufgabendefinitionen für Amazon Elastic Container Service (Amazon ECS) und Kubernetes-Bereitstellung. Es folgt außerdem den bewährten AWS-Methoden für Sicherheit und Skalierbarkeit.

Beginnen Sie mit YAML und JSON in AWS, indem sie heute ein Konto erstellen.