Есть у нас маленькая обертка над RapidJSON под названием json_dto. Ничего выдающегося, просто попытка применить идею из Boost.Serialization для того, чтобы с RapidJSON-ом работать было удобно.
Давеча в json_dto прилетел pull request, добавляющий специфическую функциональность.
Грубо говоря, нужно (де)сериализовать элементы tuple, которые в JSON представляются массивом с элементами разных типов. Что-то вроде:
{"x": [1, "abc"]}
Где для ключа "x" значением будет tuple<int, string> содержащий (1, "abd").
Сам я с такими JSON в своей практике еще не сталкивался. Поэтому вынужден обратиться за помощью к читателям блога: доводилось ли вам видеть подобные JSON-ы? Если да, то является ли это нормальной (распространенной) практикой?
Просто фича выглядит прикольной, но нет желания наполнять библиотеку новыми фичами просто потому, что они "прикольные". Ведь каждая реализованная фича -- это последующие затраты на ее поддержку в будущем.
Подобное точно есть в конфигах редактора Sublime Text. Хотя лично я не считаю хорошей затей использовать в конфигах формат, создававшийся для передачи данных по сети, ну да кто меня спрашивает ;)
ОтветитьУдалитьБольше нигде не припомню.
> Подобное точно есть в конфигах редактора Sublime Text.
ОтветитьУдалитьО! Это интересно.
> Хотя лично я не считаю хорошей затей использовать в конфигах формат, создававшийся для передачи данных по сети, ну да кто меня спрашивает ;)
Если бы разработчики JSON предусмотрели в нем комментарии, то было бы вполне OK. Ну а в текущем виде да, корявенько. Хотя и лучше, чем YAML, как по мне.
Ямл лучше джейсона, - если б не некоторые упоротые типы данных и несовместимость версий из-за них - и упоротое нежелание популярных библиотек перейти на исправленную версию.
УдалитьА джейсон туп как валенок, плохо читаем, плохо диффуем.
@Kodt
ОтветитьУдалитьЯ когда-то с воодушевлением использовал YAML вместо XML для конфигов. И после того, как некоторое время приходилось править YAML-конфиги вручную, пришел к выводу, что ну его нафиг. Не для людей это все сделано. В смысле когда логика определяется количеством лидирующих пробелов.
Впрочем, для кого-то и Python вполне себе хороший ЯП :)))