json - Delphi Superobject,通用列表到 json

标签 json delphi generics rtti superobject

我有一个带有一些 TObjectList<> 字段的对象,我尝试使用帮助表单 SuperObject 将其编码为 JSON .

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 为 nil。为什么?

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

最佳答案

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

TLogs = class(TObjectList<TLog>);

希望这个问题能在下一个版本中得到修复。

关于json - Delphi Superobject,通用列表到 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2882894/

相关文章:

python - 在运行 Yosemite 的 Mac 上完成 PyMySQL 的安装

java - Android 从手机存储中获取 JSON 数组

delphi - 如何在Delphi XE2上实现uPnP

c# - Moq - 具有通用匿名参数的设置方法

java - 创建复杂的 Json 结构

php - 在 PHP 中启用 json_encode

c# - 如何定义多个泛型参数的约束

c++ - 各种类型的容器 - C++

delphi - 如何让TScrollingWinControl滚动

delphi - ShellExecute 什么时候会失败? (德尔福)