среда, 13 декабря 2023 г.

[prog.json.question] Нужна ли такая фича в библиотеке (де)сериализации JSON?

Есть у нас маленькая обертка над RapidJSON под названием json_dto. Ничего выдающегося, просто попытка применить идею из Boost.Serialization для того, чтобы с RapidJSON-ом работать было удобно.

Давеча в json_dto прилетел pull request, добавляющий специфическую функциональность.

Грубо говоря, нужно (де)сериализовать элементы tuple, которые в JSON представляются массивом с элементами разных типов. Что-то вроде:

{"x": [1, "abc"]}

Где для ключа "x" значением будет tuple<int, string> содержащий (1, "abd").

Сам я с такими JSON в своей практике еще не сталкивался. Поэтому вынужден обратиться за помощью к читателям блога: доводилось ли вам видеть подобные JSON-ы? Если да, то является ли это нормальной (распространенной) практикой?

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

4 комментария:

Stanislav Mischenko комментирует...

Подобное точно есть в конфигах редактора Sublime Text. Хотя лично я не считаю хорошей затей использовать в конфигах формат, создававшийся для передачи данных по сети, ну да кто меня спрашивает ;)
Больше нигде не припомню.

eao197 комментирует...

> Подобное точно есть в конфигах редактора Sublime Text.

О! Это интересно.

> Хотя лично я не считаю хорошей затей использовать в конфигах формат, создававшийся для передачи данных по сети, ну да кто меня спрашивает ;)

Если бы разработчики JSON предусмотрели в нем комментарии, то было бы вполне OK. Ну а в текущем виде да, корявенько. Хотя и лучше, чем YAML, как по мне.

Kodt комментирует...

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

eao197 комментирует...

@Kodt

Я когда-то с воодушевлением использовал YAML вместо XML для конфигов. И после того, как некоторое время приходилось править YAML-конфиги вручную, пришел к выводу, что ну его нафиг. Не для людей это все сделано. В смысле когда логика определяется количеством лидирующих пробелов.

Впрочем, для кого-то и Python вполне себе хороший ЯП :)))