4

我有一个带有一些 TObjectList<>-fields 的对象,我尝试在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 序列化我的对象列表?

4

1 回答 1

7

这是 Delphi 的 RTTI 创建中的一个已知问题。如果你这样声明你的泛型类,它就行不通。您需要使用class关键字。

TLogs = class(TObjectList<TLog>);

希望这将在下一个版本中得到修复。

于 2010-05-21T14:25:28.847 回答