959 Stimmen

Was ist der Unterschied zwischen YAML und JSON?

Was sind die Unterschiede zwischen YAML und JSON, insbesondere im Hinblick auf die folgenden Punkte?

  • Leistung (Kodier-/Dekodierzeit)
  • Speicherverbrauch
  • Klarheit des Ausdrucks
  • Verfügbarkeit der Bibliothek, Benutzerfreundlichkeit (ich bevorzuge C)

Ich hatte vor, eine dieser beiden in unserem eingebetteten System zu verwenden, um Konfigurationsdateien zu speichern.

Verwandt:

Soll ich YAML oder JSON zur Speicherung meiner Perl-Daten verwenden?

28voto

jldupont Punkte 87330

Ich finde, YAML ist übersichtlicher: weniger Klammern, "" usw. Es gibt zwar das Ärgernis der Tabulatoren in YAML... aber man hat den Dreh raus.

In Bezug auf die Leistung/Ressourcen würde ich keine großen Unterschiede zwischen den beiden erwarten.

Außerdem handelt es sich um Konfigurationsdateien, so dass ich keine häufige Kodierungs-/Dekodierungsaktivität erwarten würde, oder?

27voto

Wernight Punkte 33996

Technisch YAML bietet viel mehr als JSON (YAML v1.2 ist eine Obermenge von JSON):

  • Kommentare

  • Verankerungen und Vererbung - Beispiel für 3 identische Gegenstände:

    item1: &anchor_name
      name: Test
      title: Test title
    item2: *anchor_name
    item3:
      <<: *anchor_name
      # You may add extra stuff.
  • ...

In den meisten Fällen werden die Menschen diese zusätzlichen Funktionen nicht nutzen, und der Hauptunterschied besteht darin, dass YAML verwendet Einrückung während JSON verwendet Klammern . Dadurch wird YAML übersichtlicher und lesbar (für das geschulte Auge).

Welches soll man wählen?

  • YAML zusätzliche Funktionen und eine prägnante Notation machen es zu einer guten Wahl für Konfigurationsdateien (nicht vom Benutzer bereitgestellte Dateien).
  • JSON begrenzte Funktionen, breite Unterstützung und schnelleres Parsing machen es zu einer guten Wahl für Interoperabilität und vom Benutzer bereitgestellte Daten .

23voto

Wenn Sie keine Funktionen benötigen, die YAML hat und JSON nicht, würde ich JSON bevorzugen, weil es sehr einfach ist und breit unterstützt wird (es gibt viele Bibliotheken in vielen Sprachen). YAML ist komplexer und hat weniger Unterstützung. Ich glaube nicht, dass die Parsing-Geschwindigkeit oder der Speicherverbrauch sehr unterschiedlich sein werden und vielleicht keinen großen Anteil an der Leistung Ihres Programms haben werden.

20voto

Chris Koknat Punkte 3032

Benchmark-Ergebnisse

Nachfolgend finden Sie die Ergebnisse eines Benchmarks zum Vergleich der Ladezeiten von YAML und JSON unter Python und Perl

JSON ist viel schneller, auf Kosten einer gewissen Lesbarkeit, und Funktionen wie Kommentare

Prüfverfahren

Ergebnisse

Python 3.8.3 timeit
    JSON:            0.108
    YAML CLoader:    3.684
    YAML:           29.763

Perl 5.26.2 Benchmark::cmpthese
    JSON XS:         0.107
    YAML XS:         0.574
    YAML Syck:       1.050

Perl 5.26.2 Dumbbench (Brian D Foy, excludes outliers)
    JSON XS:         0.102
    YAML XS:         0.514
    YAML Syck:       1.027

16voto

H S Progr Punkte 4604

Von: Arnaud Lauret Buch "The Design of Web APIs". :

Das JSON-Datenformat

JSON ist ein Textdatenformat, das auf der Art und Weise basiert, wie die Programmiersprache JavaScript Daten beschreibt, aber trotz seines Namens völlig sprachunabhängig ist (siehe https://www.json.org/ ). Verwendung von JSON können Sie Objekte beschreiben, die ungeordnete Name/Wert-Paare enthalten, aber auch Arrays oder Listen, die geordnete Werte enthalten, wie in dieser Abbildung dargestellt.

enter image description here

Ein Objekt wird durch geschweifte Klammern ({}) abgegrenzt. Ein Name ist eine Zeichenkette in Anführungszeichen ("name") und wird durch einen Doppelpunkt (:) von seinem Wert getrennt. Ein Wert kann eine Zeichenkette wie "value", eine Zahl wie 1.23, ein Boolean (true oder false), der Nullwert null, ein Objekt oder ein Array sein. Ein Array wird durch eckige Klammern ([]) abgegrenzt, und seine Werte werden durch Kommas (,) getrennt. Die JSON Format kann mit jeder Programmiersprache leicht geparst werden. Es ist auch relativ einfach zu lesen und zu schreiben. Es wird für viele Zwecke verwendet, z. B. für Datenbanken, Konfigurationsdateien und natürlich für APIs.

YAML

YAML (YAML Ain't Markup Language) ist ein menschenfreundliches Format zur Serialisierung von Daten. Wie JSON ist auch YAML ( http://yaml.org ) ist ein Schlüssel/Wert-Datenformat. Die Abbildung zeigt einen Vergleich der beiden Formate.

enter image description here

Beachten Sie die folgenden Punkte:

  • Es gibt keine doppelten Anführungszeichen (" ") um Eigenschaftsnamen und Werte in YAML .

  • JSON's strukturelle geschweifte Klammern ({}) und Kommas (,) werden durch Zeilenumbrüche ersetzt und Einrückung in YAML .

  • Array-Klammern ([]) und Kommas (,) werden durch Bindestriche (-) und Zeilenumbrüche ersetzt in YAML .

  • Anders als JSON , YAML erlaubt Kommentare, die mit einem Rautezeichen (#) beginnen. Es ist relativ einfach, eines dieser Formate in das andere zu konvertieren. Seien Sie jedoch gewarnt, dass Sie Kommentare verlieren, wenn Sie ein YAML Dokument an JSON .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X