Сабж.
В python есть pickle который хранит в т.ч. типы пользователя и автоматически импортит модули при десериализации, но pickle какой то маргинальный стал (чехарда с форматами и невнятные перспективы), хочется уйти на json. Кроме того pickle все равно не умеет хранить комментарии из коробки.
Нужно сохранять и загружать вот такое:
-
хранится словарь в который м.б. вложено несколько других словарей, кольцевых зависимостей нет.
-
ключи в исходных данных гарантированно текстовые отвечающие требованиям к питоньим идентификаторам.
-
Типы параметров — все что есть в json из коробки (числа, строки, списки, словари) + что то пользовательское, м.б. сложное и требующее импорта сторонних модулей при восстановлении.
-
некоторые из параметров могут быть снабжены комментариями (комментарий это строка)
-
желательно что бы комментарий лежал рядом с параметром для улучшения читабельности .json - файла глазами.
Интересна не техника записи/чтения в коде, интересна сама структура данных.
Понятно что список импортируемых модулей можно хранить в каком то списке на верхнем уровне.
Можно сделать две параллельных структуры с типами и комментариями, но выглядит как извращение:
[{ 'a':1, 'b':2.5, 'c':[1,2,3]},
{'c':'myvector.myvector3D'},
{'a':'длина баскетбольной площадки', 'c':'куда бросать мяч'}
]
Можно загонять тип в имя параметра 'myvector3D c':[1,2,3]
,
можно рядом с параметром класть какую то информацию '@c':['myvector3D', 'куда бросать мяч']
— но это все работает только если параметры лежат в словаре, скорее всего так и будет но что то может поменяться.
В общем много вариантов но хороших я не вижу;-(