Diese Frage ist 6 Jahre alt, aber seltsamerweise geht keine der Antworten wirklich auf alle vier Punkte ein (Geschwindigkeit, Speicher, Ausdrucksfähigkeit, Portabilität).
Geschwindigkeit
Natürlich hängt dies von der Implementierung ab, aber da JSON so weit verbreitet und so einfach zu implementieren ist, wird es in der Regel von den Einheimischen stärker unterstützt und ist daher schneller. Wenn man bedenkt, dass YAML alles kann, was JSON kann, und noch eine ganze Menge mehr, ist es wahrscheinlich, dass von allen vergleichbaren Implementierungen beider Formate die JSON-Implementierung schneller sein wird.
Da eine YAML-Datei jedoch etwas kleiner sein kann als ihr JSON-Gegenstück (aufgrund weniger "
y ,
Zeichen), ist es möglich dass ein hochoptimierter YAML-Parser in Ausnahmefällen schneller sein kann.
Speicher
Im Grunde gilt das gleiche Argument. Es ist nicht einzusehen, warum ein YAML-Parser jemals speichereffizienter sein sollte als ein JSON-Parser, wenn beide die gleiche Datenstruktur repräsentieren.
Ausdruckskraft
Wie bereits erwähnt, bevorzugen Python-Programmierer eher YAML, JavaScript-Programmierer eher JSON. Ich werde diese Beobachtungen machen:
- Es ist einfach, sich die gesamte JSON-Syntax einzuprägen und somit die Bedeutung jeder JSON-Datei zu verstehen. YAML ist für einen Menschen nicht wirklich verständlich. Die Anzahl der Feinheiten und Randfälle ist extrem.
- Da nur wenige Parser die gesamte Spezifikation implementieren, ist es noch schwieriger, sich über die Bedeutung eines bestimmten Ausdrucks in einem bestimmten Kontext sicher zu sein.
- Das Fehlen von Kommentaren in JSON ist in der Praxis ein echtes Problem.
Tragbarkeit
Es ist schwer, sich eine moderne Sprache ohne eine JSON-Bibliothek vorzustellen. Es ist auch schwer vorstellbar, dass ein JSON-Parser weniger als die vollständige Spezifikation implementiert. YAML wird zwar weitgehend unterstützt, ist aber nicht so weit verbreitet wie JSON, und jeder Parser implementiert eine andere Teilmenge. Daher sind YAML-Dateien weniger interoperabel, als Sie vielleicht denken.
Zusammenfassung
JSON ist der Gewinner in Bezug auf Leistung (falls relevant) und Interoperabilität. YAML ist besser für von Menschen gepflegte Dateien. HJSON ist ein guter Kompromiss, wenn auch mit deutlich eingeschränkter Tragbarkeit. JSON5 ist ein vernünftigerer Kompromiss mit einer klar definierten Syntax.