Суперобъект 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>);

Надеюсь, это будет исправлено в следующем выпуске.

Другие вопросы по тегам