Что-то не так с форматом YAML, который нужно объединить с веб-стандартами? - PullRequest
4 голосов
/ 16 марта 2011

Ну, я думаю, что YAML действительно фантастический ...

Это красивый, удобный для чтения, умный синтаксис ... по сравнению с любым другим форматом сериализации данных.В качестве надмножества JSON мы могли бы сказать, что он более сложный, отсюда и эволюция его языка.

Но я вижу там несколько разных мнений, таких как:

  • YAML мертв,
  • не используйте yaml и так далее ...

Я просто не могу понять, на чем это основано, потому что это кажется таким хорошим:)

Еслив Интернете мы приводим несколько удачных примеров, таких как Ruby on Rails , мы знаем, что они используют yaml для простой конфигурации, но одна вещь, которая меня удивляет, это , почему yaml не является частью наиболее часто используемыхформаты через Интернет , такие как XML и JSON.

Если вы возьмете, например, твиттер ... почему бы не предлагать данные в формате YAML также из API?

что-то не так, делая это?

Мы можем увидеть эволюцию баз данных no-sql, таких как couchdb , mongo , все на основе json, даже один великийПроект под названием jsondb выглядит очень легким и определенно может справиться с работой.

Но когда я пишу структуры данных в json, я действительно не могу понять, почему вместо этого не используется YAML.

Так что одной из моих проблем будет, если что-то не так с YAML?

Люди могут сказать, что это сложно, но хорошо, если вы притворяетесь, что используете те же функции, что и в json , это определенно не .Вы получите более красивый файл точно и без хлопот.Было бы действительно сложнее, если вы решили использовать больше функций, но это так, по крайней мере, у вас есть возможность использовать его, если хотите.

Возможность выбора, хотите вы или нетиспользуйте двойные кавычки для строки - это фантастика, делает все чище и проще для чтения .... ну, вы понимаете, в чем моя точка зрения:)

Так что мой вопрос будет, почему YAMLне широко используется вместо JSON ?

Почему не похоже, что он будет использоваться для передачи структуры данных в онлайн-сообществе?

Все, что я вижу, это людииспользуя его для простых файлов конфигурации и ничего больше ...

Пожалуйста, потерпите меня, поскольку я могу быть совершенно неправ, и могут происходить очень большие проекты, и мое незнание этого вопроса не позволило мнебыть частью этого:)

Если есть какой-нибудь большой проект, основанный на yaml, я был бы очень рад узнать об этом

Заранее спасибо

Ответы [ 5 ]

3 голосов
/ 16 марта 2011

Дело не в том, что с YAML что-то не так, просто во многих случаях он не дает никаких существенных преимуществ. YAML - это в основном надмножество JSON. Для большинства целей JSON вполне достаточно - люди не будут использовать расширенные функции YAML, даже если у них будет полный синтаксический анализатор YAML - а его тесная связь с JavaScript делает его хорошо подходящим для технологий, которые веб-разработчики используют в любом случае.

TLDR: Люди уже используют столько YAML, сколько им нужно. В большинстве случаев это JSON.

2 голосов
/ 22 июля 2013

В YAML используется больше данных, чем в неподтвержденном JSON. Это отлично подходит для файлов, которые люди могут захотеть редактировать сами, но когда все, что вы делаете - передаете данные, вы тратите трафик, если используете YAML.

Если вам нужно объяснение: каждый пробел в UTF-16 составляет два байта. YAML использует пробелы для отступа и символы новой строки для вложения.

Возьмите этот пример:

foo:
    bar:
        - foo
        - bar

Для этого требуется 44 символа (включая символы новой строки). Эквивалент JSON будет всего 29 символов:

{"foo":{"bar":["foo","bar"]}}

Тогда только представьте, что произойдет, если вы закодируете URL YAML. Становится 95 символов:

foo%3A%0A%20%20%20%20bar%3A%0A%20%20%20%20%20%20%20%20-%20foo%0A%20%20%20%20%20%20%20%20-%20bar

Между тем JSON просто становится 64 символами:

%7B%22foo%22%3A%7B%22bar%22%3A%5B%22foo%22%2C%22bar%22%5D%7D%7D

Увеличение размера YAML от JSON более чем вдвое при кодировании URL, в приведенном выше примере. И я уверен, что вы можете себе представить, что чем длиннее ваш YAML-файл, тем больше и больше эта разница будет увеличиваться.

Да, и еще одна причина не использовать YAML: stackoverflow.com не поддерживает подсветку синтаксиса YAML ...! (Конечно, я бы сказал, что YAML настолько красив, что не нужно подсветка синтаксиса. Я думаю, это и есть смысл YAML. *

2 голосов
/ 16 марта 2011

В Ruby многие утверждают, что конфигурация должна быть Ruby, а не YAML. Это экономит этап синтаксического анализа, означает, что вам не нужно изучать новый синтаксис и не заканчивайте использовать теги ERB везде, когда вы динамически генерируете контент YAML (Rails fixtures).

Лично я должен согласиться и не вижу, что YAML предложит для сетевых передач, что сделало бы его достойным рассмотрения по сравнению с JSON.

0 голосов
/ 08 мая 2018

YAML имеет много проблем, есть хорошая статья на эту тему: [https://arp242.net/weblog/yaml_probably_not_so_great_after_all.html] Краткое резюме (в дополнение к проблемам, уже перечисленным в других ответах):

  • Не читается, кромедля простых и коротких вещей
  • Небезопасно по умолчанию
  • Имеет проблемы с переносимостью
  • Очень сложный, с неожиданным поведением
0 голосов
/ 11 сентября 2017

Я рассматривал возможность использования YAML несколько раз и никогда не делал.Причина всегда была связана с пробелами для отступов.Хотя мне лично это нравится, даже для меня это звучало как просьба о неприятностях, потому что

  • Конечно, кто-то допустит ошибку, не ожидая, что изменение пробелов нарушит файл.Иногда кто-то, кто не имеет представления о языке / формате, должен перейти к файлу, чтобы изменить одно число или строку.
  • Вы не можете гарантировать, что у всех повсюду будет программное обеспечение для сравнения / слияния / SC, настроенное правильнопоймать пробелы или пустые строки.
...