Суперобъект Delphi, общий список для json
У меня есть объект с некоторыми TObjectList<>- полями, которые я пытаюсь закодировать как JSON с помощью формы SuperObject.
TLogs = TObjectList<TLog>;
TMyObject = class(TObject)
private
FLogs: TLogs;
end;
В глубине кода SuperObjects есть процедура ToClass, которая выполняет итерации полей и добавляет их в результат json.
В этом цикле выполняется проверка TRTtiFields FieldType. Если это ноль, это пропускает объект.
for f in Context.GetType(Value.AsObject.ClassType).GetFields do
if f.FieldType <> nil then
begin
v := f.GetValue(value.AsObject);
result.AsObject[GetFieldName(f)] := ToJson(v, index);
end
Мои общие поля списка имеют тип FieldType, равный нулю. Зачем?
Как я могу заставить SuperObject сериализовать мой список объектов?
1 ответ
Это известная проблема при создании RTTI в Delphi. Если вы объявите свой родовой класс таким образом, он не будет работать. Вам нужно использовать ключевое слово класса.
TLogs = class(TObjectList<TLog>);
Надеюсь, это будет исправлено в следующем выпуске.