To pytanie ma 6 lat, ale, o dziwo, żadna z odpowiedzi tak naprawdę nie dotyczy wszystkich czterech punktów (szybkość, pamięć, ekspresyjność, przenośność).
Prędkość
Oczywiście jest to zależne od implementacji, ale ponieważ JSON jest tak szeroko stosowany i tak łatwy w implementacji, że zwykle otrzymywał większe wsparcie natywne, a tym samym szybkość. Biorąc pod uwagę, że YAML robi wszystko, co robi JSON, a także więcej ciężarówek, prawdopodobne jest, że w przypadku porównywalnych implementacji obu JSON będzie szybszy.
Jednak biorąc pod uwagę, że plik YAML może być nieco mniejszy niż jego odpowiednik JSON (z powodu mniejszej liczby plików "
i ,
znaków), to możliwe , że wysoce zoptymalizowany YAML parser może być szybsze w wyjątkowych okolicznościach.
Pamięć
Zasadniczo stosuje się ten sam argument. Trudno zrozumieć, dlaczego analizator składni YAML byłby kiedykolwiek bardziej wydajny pod względem pamięci niż analizator JSON, jeśli reprezentuje tę samą strukturę danych.
Wyrazistość
Jak zauważyli inni, programiści Python wolą programistów YAML, JavaScript od JSON. Zrobię te obserwacje:
- Łatwo zapamiętać całą składnię JSON, a zatem być bardzo pewnym w zrozumieniu znaczenia każdego pliku JSON. YAML nie jest naprawdę zrozumiały dla żadnego człowieka. Liczba subtelności i przypadków krawędzi jest ekstremalna.
- Ponieważ niewiele parserów implementuje całą specyfikację, jeszcze trudniej jest mieć pewność co do znaczenia danego wyrażenia w danym kontekście.
- Brak komentarzy w JSON to w praktyce prawdziwy ból.
Ruchliwość
Trudno wyobrazić sobie nowoczesny język bez biblioteki JSON. Trudno też wyobrazić sobie parser JSON implementujący mniej niż pełną specyfikację. YAML ma szerokie wsparcie, ale jest mniej wszechobecny niż JSON, a każdy parser implementuje inny podzbiór. Dlatego pliki YAML są mniej interoperacyjne, niż mogłoby się wydawać.
Podsumowanie
JSON jest zwycięzcą pod względem wydajności (jeśli dotyczy) i interoperacyjności. YAML jest lepszy dla plików obsługiwanych przez człowieka. HJSON jest przyzwoitym kompromisem, choć ma znacznie zmniejszoną przenośność. JSON5 jest bardziej rozsądnym kompromisem z dobrze zdefiniowaną składnią.