Этому вопросу 6 лет, но, как ни странно, ни один из ответов на самом деле не затрагивает все четыре пункта (скорость, память, выразительность, портативность).
скорость
Очевидно, что это зависит от реализации, но поскольку JSON настолько широко используется и настолько прост в реализации, он, как правило, получает большую собственную поддержку и, следовательно, скорость. Учитывая, что YAML делает все, что делает JSON, плюс больше грузовиков, вполне вероятно, что из любых сопоставимых реализаций обоих JSON будет быстрее.
Однако, учитывая , что файл YAML может быть немного меньше , чем его аналог JSON (за счет меньшего количества "
и ,
символы), это возможно , что оптимизированная YAML парсер может быть быстрее , в исключительных обстоятельствах.
Память
В основном применяется тот же аргумент. Трудно понять, почему синтаксический анализатор YAML мог бы быть более эффективным с точки зрения памяти, чем анализатор JSON, если они представляют одну и ту же структуру данных.
Выразительность
Как отмечали другие, программисты на Python предпочитают программировать на YAML, JavaScript, а не JSON. Я сделаю эти наблюдения:
- Легко запомнить весь синтаксис JSON и, следовательно, быть очень уверенным в понимании смысла любого файла JSON. ЯМЛ не совсем понятен любому человеку. Количество тонкостей и крайних случаев крайне.
- Поскольку немногие парсеры реализуют всю спецификацию, еще сложнее быть уверенным в значении данного выражения в данном контексте.
- Отсутствие комментариев в JSON на практике является настоящей болью.
портативность
Трудно представить современный язык без библиотеки JSON. Также сложно представить JSON-парсер, реализующий что-то меньшее, чем полная спецификация. YAML имеет широкую поддержку, но менее распространен, чем JSON, и каждый анализатор реализует свое подмножество. Следовательно, файлы YAML менее совместимы, чем вы думаете.
Резюме
JSON - победитель за производительность (если уместно) и совместимость. YAML лучше для файлов, поддерживаемых человеком. HJSON - достойный компромисс, хотя и с гораздо меньшей переносимостью. JSON5 - более разумный компромисс с четко определенным синтаксисом.