2015-01-14 45 views
1

我有一個哈希表,其中的鍵是整數類型,但是當使用json.net反序列化鍵返回字符串時,有沒有辦法使用json.net序列化保持哈希表上的鍵類型/反序列化?這是哈希表型「的MyType」的屬性使用Json.Net的序列化哈希表

var settings = new JsonSerializerSettings(); 
settings.TypeNameHandling = TypeNameHandling.Objects; 
string json = JsonConvert.SerializeObject(o, Formatting.Indented, settings); 

mo = JsonConvert.DeserializeObject<MyType>(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects }); 

public Hashtable jsonViews 
{ 
    get { return mViews; } 
    set { mViews = value; } 
} 
+0

你是如何反序列化哈希表?你可以顯示代碼嗎? – toadflakz

+0

我編輯了我的問題 –

+0

你可以發佈MyType類嗎?至少公共財產...... – toadflakz

回答

5

的問題是,System.Collections.Hashtable不是強類型 - 它將持有任何類型的對象,並JSON.NET是最有可能連載的字符串表示你的散列表內容。

在花費太多時間按摩JSON.NET串行器/解串器來彌補這一點之前,您可能需要考慮將Hashtable切換爲Dictionary<TKey, TValue>。它在性能方面幾乎完全相同,但爲您提供強類型集合的優勢和安全性。

強類型集合將解決您的Json.NET反序列化問題,因爲Json.NET可以從字典中推斷出類型。

使用Dictionary<TKey,TValue>超過Hashtableis discussed here