2010-05-21 101 views
4

我有一個對象,有一些TObjectList <>我嘗試編碼爲JSON的字段,其格式爲SuperObject德爾福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序列化我的對象列表?

回答

7

這是Delphi RTTI創建中的一個已知問題。如果你像這樣聲明你的泛型類,它將不起作用。您需要使用關鍵字。

TLogs = class(TObjectList<TLog>); 

希望這將在下一個版本中得到解決。

+0

+1:這個問題是否受到Embarcadero的支持? – menjaraz 2012-04-10 05:46:13

+0

@menjaraz:據我所知,它還沒有。 – 2012-04-10 11:50:43

+0

謝謝你的回答。 – menjaraz 2012-04-10 12:04:22