Delphi超级对象,将泛型列表转换为JSON

4

我有一个对象,其中包含一些TObjectList<>字段,我试图使用SuperObject的帮助将其编码为JSON。

TLogs = TObjectList<TLog>;
TMyObject = class(TObject)
private
  FLogs: TLogs;
end;

在SuperObjects代码的深处,有一个ToClass过程,它迭代字段并将它们添加到json结果中。

在这个循环中,对TRttiFields FieldType进行了检查。如果为nil,则跳过该对象。

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是nil?

我该如何让SuperObject序列化我的对象列表?

1个回答

7

在Delphi的RTTI创建过程中,这是一个已知的问题。如果您像这样声明泛型类,则无法正常工作。您需要使用class关键字。

TLogs = class(TObjectList<TLog>);

希望这个问题会在下一个版本中得到解决。

据我所知,它还没有。 - Mason Wheeler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接