Comments 30
Который значительно сложнее и очень хрупкий (из-за значащих отступов).
Смотря что вам нужно от формата сериализации. Кто-то вон на питоне и кофе пишет, на отступы вроде не жалуются. В edn зато разделителей в массивах нет.
Насчет сложности, искренне не понимаю чем yaml сложнее edn. Вроде всё то же самое, вид сбоку.
Насчет сложности, искренне не понимаю чем yaml сложнее edn. Вроде всё то же самое, вид сбоку.
Вы, видимо, не в курсе, что валидный json является в то же время валидным yaml документом?
Я был не в курсе. Забавно. но спорное преимущество. Писать yaml в json'овом формате это странно. Мне лично yaml немного не нравится тем, что в нём я не могу спокойно, как захочется, писать данные, надо строго следить за отступами. Если редактор поддерживает yaml и сам всё контролирует, то круто, но это не всегда так. Конечно в этом и прелесть yaml'а, что все файлы (конфиги) выглядят однообразно и красиво. Но если что-то на коленке протестировать, как пример с тем же curl'ом (где гарантия, что парсеры yaml'а корректно распарсят json-like формат?). Поэтому с json'ом или edn'ом мне кажется будет проще для таких целей.
>> где гарантия, что парсеры yaml'а корректно распарсят json-like формат?
Там же где и гарантия, что они корректно распарсят yaml. Он так устроен, что json является его подмножеством (yaml 1.2).
Если вы не доверяете конкретным реализациям парсера, то это уже другой вопрос.
Там же где и гарантия, что они корректно распарсят yaml. Он так устроен, что json является его подмножеством (yaml 1.2).
Если вы не доверяете конкретным реализациям парсера, то это уже другой вопрос.
Я сейчас попробовал найти yaml парсер для джавы, который поддерживает 1.2 и сходу не нашёл. Т.е. для спецификации, которой уже больше 3 лет нет реализации на одном из самых популярных языков? Я могу это понять тем, что это не сильно актуально, т.к. мало кто пользуется этими фичами. И следовательно от того, что они есть ни холодно, ни жарко.
Вообще посмотрел на оф сайте, большинство реализуют 1.0 или 1.1: www.yaml.org/
Вообще посмотрел на оф сайте, большинство реализуют 1.0 или 1.1: www.yaml.org/
Об этом конечно можно много спорить, но я напишу не для этого а просто чтобы ваше безапеляционное заявление не казалось читателям какой-то общеизвестной истиной а тем чем и является — вашим личным мнением, подкреплённым неизвестно чем.
По мне так yaml гораздо проще, ведь он и задумывался как формат с наибольшей удобочитаемостью и чётким пониманием людьми. Теже значащие отступы гарантируют что структуру человек сможет легко воспринять на глаз, потому что они всегда будут соответствовать семантическому уровню данных в документе. Может вы имеете ввиду что его сложнее парсить? Ну это да, так это проблема парсеров, их всё равно почти никто на коленке не пишет…
По мне так yaml гораздо проще, ведь он и задумывался как формат с наибольшей удобочитаемостью и чётким пониманием людьми. Теже значащие отступы гарантируют что структуру человек сможет легко воспринять на глаз, потому что они всегда будут соответствовать семантическому уровню данных в документе. Может вы имеете ввиду что его сложнее парсить? Ну это да, так это проблема парсеров, их всё равно почти никто на коленке не пишет…
Может ли в качестве ключа в мапе быть использован обьект?
При работе с json приходится дико изворачиваться.
{"map": {}}
Где тут дикие извороты?
Или вы хотите писать так?
{{} : {}}
Если да, то теперь самому интересно как это будет выглядеть и обрабатываться
>edn — формат данных, появившийся из языка clojure.
S-exp приблизительно раз в 10 старше самой clojure а plist'ы для представления данных думаю появились вместе с ними.
S-exp приблизительно раз в 10 старше самой clojure а plist'ы для представления данных думаю появились вместе с ними.
Верю. А как это относится к тому, что edn появился из clojure?
Гм, я так расчитывал что хоть в одном более-менее общеизвестном формате появяться back reference.(возможность ссылаться на другой объект внутри документа)
Но в статье про них не упоминается, значит и тут их нет?
Но в статье про них не упоминается, значит и тут их нет?
Нет, их тут нет. Для этого видимо нужно юзать yaml.
В нормальной реализации plist (например в Common Lisp) есть backreference:
'(:param1 #1=1 :param2 2 :param3 #1#)
'(:param1 #1=1 :param2 2 :param3 #1#)
Нет, и это философская позиция. EDN — формат представления данных, а не объектов и их связей. Backreference бы усложнили понимание, реализацию и сделали бы парсер stateful.
Да, пожалуй вы правы. backreference лучше реализовывать на уровне выше парсера, как-то мне это не приходило в голову
Удваиваю оратора выше. Сам автор напирает на это:
edn is a system for the conveyance of values.и далее
…Nor is it a system for representing objects…github.com/edn-format/edn
Можно использовать формат UTF8: \u2603.Вероятно, тут имеется ввиду юникодный литерал, т.е. юникод в целом, а не именно UTF-8. Точно такие символы (четыре шестнадцатеричные цифры) поддерживаются и в JSON, и там тоже о них не говорится, как о UTF-8.
В качестве ключей может выступать любой другой тип.К слову, в YAML ключи тоже могут быть не скалярного типа. Вероятно, как для YAML, так и для edn большинство реализаций парсера всё таки ограничиваются простыми типами.
Вообще сложно придумать, когда может быть удобнее использовать список, а не вектор.Имхо, здесь списки по своей природе ближе к типу record, чем к типу vector. Т.е. это типа рекорда, в котором элементы не поименованы. А сложно придумать, потому что и списки и вектора здесь гетерогенные. Для многих языков второе не верно.
Элементы с тегами это весьма клёвая штука. Сам автор в одной из своих презентаций напирает на важность расширяемости для формата. Как edn, так и YAML поддерживают теги, что позволяет регистрировать в формате свои типы. JSON — нет, и теги приходится симулировать.
Лично мне в edn симпатичен такой простой факт: пары ключи-значения не надо никак разделять. Ключ и значение в мапе определятся чисто по порядку: нечётные элементы это ключи, последующие чётные — их значения. Это очень круто.
С одной стороны мы имеем JSON с его запятой-разделителем и двоеточием внутри пары. Он также не позволяет «висячие» запятые, это означает, что при перестановке-добавлении-удалении элементов легко потерять запятую, или добавить лишнюю.
С другой мы имеем YAML, где всё подвязано на отступы.
Тут нет ни подвязки на разделитель, ни на отступы, да и разделитель внутри пары не нужен. Супер.
С одной стороны мы имеем JSON с его запятой-разделителем и двоеточием внутри пары. Он также не позволяет «висячие» запятые, это означает, что при перестановке-добавлении-удалении элементов легко потерять запятую, или добавить лишнюю.
С другой мы имеем YAML, где всё подвязано на отступы.
Тут нет ни подвязки на разделитель, ни на отступы, да и разделитель внутри пары не нужен. Супер.
Sign up to leave a comment.
edn: extensible data notation