Diese Frage ist 6 Jahre alt, aber seltsamerweise spricht keine der Antworten wirklich alle vier Punkte an (Geschwindigkeit, Gedächtnis, Ausdruckskraft, Portabilität).
Geschwindigkeit
Dies ist natürlich implementierungsabhängig, aber da JSON so weit verbreitet und einfach zu implementieren ist, wird es tendenziell nativer unterstützt und daher schneller. Wenn man bedenkt, dass YAML alles tut, was JSON tut, plus eine LKW-Ladung mehr, ist es wahrscheinlich, dass von vergleichbaren Implementierungen von beiden die JSON-Implementierung schneller sein wird.
Da eine YAML-Datei jedoch geringfügig kleiner sein kann als ihr JSON-Gegenstück (aufgrund von weniger "
und ,
Zeichen), ist dies möglich dass ein hochoptimierter YAML-Parser unter außergewöhnlichen Umständen schneller ist.
Erinnerung
Grundsätzlich gilt das gleiche Argument. Es ist schwer zu verstehen, warum ein YAML-Parser jemals speichereffizienter sein würde als ein JSON-Parser, wenn er dieselbe Datenstruktur darstellt.
Ausdruckskraft
Wie von anderen angemerkt, bevorzugen Python-Programmierer YAML, JavaScript-Programmierer JSON. Ich werde diese Beobachtungen machen:
- Es ist einfach, sich die gesamte Syntax von JSON zu merken und daher sehr sicher zu sein, die Bedeutung einer JSON-Datei zu verstehen. YAML ist für keinen Menschen wirklich verständlich. Die Anzahl der Feinheiten und Randfälle ist extrem.
- Da nur wenige Parser die gesamte Spezifikation implementieren, ist es noch schwieriger, die Bedeutung eines bestimmten Ausdrucks in einem bestimmten Kontext zu bestimmen.
- Das Fehlen von Kommentaren in JSON ist in der Praxis ein echtes Problem.
Portabilität
Eine moderne Sprache ohne eine JSON-Bibliothek ist kaum vorstellbar. Es ist auch schwer vorstellbar, dass ein JSON-Parser weniger als die vollständige Spezifikation implementiert. YAML hat weit verbreitete Unterstützung, ist jedoch weniger allgegenwärtig als JSON, und jeder Parser implementiert eine andere Teilmenge. Daher sind YAML-Dateien weniger interoperabel als Sie vielleicht denken.
Zusammenfassung
JSON ist der Gewinner für Leistung (falls relevant) und Interoperabilität. YAML ist besser für von Menschen gepflegte Dateien. HJSON ist ein anständiger Kompromiss, wenn auch mit stark eingeschränkter Portabilität. JSON5 ist ein vernünftigerer Kompromiss mit genau definierter Syntax.