使用Json.Net序列化哈希表

我有一个哈希表,其键的类型为整数,但是当使用json.net进行反序列化时,键会以字符串forms返回,有没有办法使用json.net序列化/反序列化将键类型保留在哈希表上? 此哈希表是“MyType”类型的属性

var settings = new JsonSerializerSettings(); settings.TypeNameHandling = TypeNameHandling.Objects; string json = JsonConvert.SerializeObject(o, Formatting.Indented, settings); mo = JsonConvert.DeserializeObject(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects }); public Hashtable jsonViews { get { return mViews; } set { mViews = value; } } 

问题是System.Collections.Hashtable不是强类型的 – 它将包含任何类型的对象,而JSON.NET最有可能序列化哈希表内容的字符串表示。

在花费太多时间按摩JSON.NET序列化器/反序列化器来弥补这一点之前,您可能需要考虑将Hashtable切换为Dictionary 。 它在性能方面几乎完全相同,但为您提供强类型集合的优势和安全性。

强类型集合将解决您的Json.NET反序列化问题,因为Json.NET可以从字典中推断出类型。

这里讨论使用Dictionary over Hashtable