Если интересна сериализация в runtime, то у меня есть пара новых типов Variant - VarDict (словарь, ассоциативный массив) и VarList (список, динамический массив).
Пример использования VarDict:
var MyDict: Variant;
MyDict := VarDictCreate();
MyDict.Field1 := 1;
MyDict.Field2 := 'test';
WriteLn(MyDict); // {Field1:1,Field2:"test"}
То есть, у переменной типа Variant можно "на ходу" создавать и использовать новые поля типа Variant, в том числе вложенные VarDict и VarList.
Методы:
GetCount() - get stored items count
GetValue(Index) - get item value for given Index (0..GetCount()-1)
GetName(Index) - get item name for given Index (0..GetCount()-1)
GetNameIndex(Name) - get index of item Name, or <0 if Name not found
Исходники:
https://github.com/serbod/NovaLib/blob/ ... rDicts.pas
https://github.com/serbod/NovaLib/blob/ ... rLists.pas
Модули для сериализации:
https://github.com/serbod/NovaLib/blob/ ... zeBase.pas - базовый класс сериализатора
https://github.com/serbod/NovaLib/blob/ ... onUnit.pas - сериализация JSON
https://github.com/serbod/NovaLib/blob/ ... deUnit.pas - сериализация Bencode