Veg*_*gar 4 delphi generics json rtti superobject
我有一个带有一些TObjectList <>的对象 - 我尝试使用帮助形式SuperObject编码为JSON的字段.
TLogs = TObjectList<TLog>;
TMyObject = class(TObject)
private
FLogs: TLogs;
end;
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
我的通用列表字段的FieldType为nil.为什么?
如何让SuperObject序列化我的对象列表?
这是Delphi的RTTI创建中的一个已知问题.如果你声明你的泛型类,它将无法工作.您需要使用class关键字.
TLogs = class(TObjectList<TLog>);
Run Code Online (Sandbox Code Playgroud)
希望这将在下一个版本中修复.
| 归档时间: |
|
| 查看次数: |
3050 次 |
| 最近记录: |