Задача J. Сериализатор

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб
Максимальный балл:20  

Условие

Требуется разработать библиотеку для сохранения и чтения данных в формате JSON.

Библиотека должна содержать две основные функции string Serialize(object obj) и object Deserialize(string s).

Сохраняемые типы должны включать целочисленные, вещественные, string, bool, Dict со строковыми ключами и произвольным сохраняемым типом элементов, List с произвольным сохраняемым типом элементов, классы и структуры (не-generic).

При сохранении класса или структуры с публичными полями она должна преобразовываться в объект JSON с дополнительным полем "class", содержащим имя типа.

Отправляемое решение должно содержать автоматические тесты, полностью покрывающие функциональность.

Формат входных данных

Отправьте ссылку на конкретный коммит в репозитории на Github, например

https://github.com/klenin/cats-main/commit/781b8dc90387fe87b3d861ce1813dbdba5d4c827

В качестве среды разработки укажите Answer text.

Примеры тестов

Стандартный вход Стандартный выход
1
0
1

0.056s 0.013s 13