Суперобъект Delphi, общий список для json - PullRequest
4 голосов
/ 21 мая 2010

У меня есть объект с некоторыми 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 Ответ

7 голосов
/ 21 мая 2010

Это известная проблема при создании RTTI в Delphi. Если вы объявите свой родовой класс таким образом, он не будет работать. Вам нужно использовать ключевое слово class .

TLogs = class(TObjectList<TLog>);

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

...