Це питання 6 років, але, як не дивно, жодна з відповідей насправді не стосується всіх чотирьох моментів (швидкість, пам'ять, виразність, портативність).
Швидкість
Очевидно, це залежить від впровадження, але оскільки JSON настільки широко використовується і настільки простий у реалізації, він, як правило, отримує більшу підтримку, а отже, і швидкість. Зважаючи на те, що YAML робить все, що робить JSON, а також більше вантажівки, ймовірно, що будь-яка порівнянна реалізація обох, JSON буде швидшою.
Однак, з огляду на , що файл YAML може бути трохи менше , ніж його аналог JSON (за рахунок меншої кількості "
і ,
символи), то можливо , що оптимізована YAML парсер може бути швидше , у виняткових обставинах.
Пам'ять
В основному застосовується той же аргумент. Важко зрозуміти, чому аналізатор YAML коли-небудь був би більш ефективним у пам’яті, ніж аналізатор JSON, якщо вони представляють однакову структуру даних.
Виразність
Як зазначають інші, програмісти Python схильні віддавати перевагу програмістам YAML, JavaScript перед JSON. Я зроблю такі спостереження:
- Запам'ятати весь синтаксис JSON легко, а значить, дуже впевнено розуміти значення будь-якого файлу JSON. YAML не по-справжньому зрозумілий жодній людині. Кількість тонкощів і крайніх випадків надзвичайна.
- Оскільки мало парсери реалізують всю специфіку, навіть важче бути впевненим у значенні даного виразу в заданому контексті.
- На практиці відсутність коментарів у JSON - це справжній біль.
Переносність
Важко уявити сучасну мову без бібліотеки JSON. Важко також уявити аналізатор JSON, який реалізує щось менше, ніж повний спектр. YAML має широку підтримку, але менш повсюдна, ніж JSON, і кожен аналізатор реалізує інший підмножина. Отже файли YAML менш взаємодіючі, ніж ви могли подумати.
Підсумок
JSON є переможцем за ефективність (якщо це доречно) та сумісність. YAML краще для файлів, що підтримуються людиною. HJSON - гідний компроміс, хоча із значно зменшеною портативністю. JSON5 - більш розумний компроміс, з чітко визначеним синтаксисом.