我有一个哈希表,其键是整数类型,但是当使用 json.net 反序列化时,键以字符串形式返回,有没有办法使用 json.net 序列化/反序列化将键类型保留在哈希表上?此哈希表是“MyType”类型的属性
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; }
}
最佳答案
问题是 System.Collections.Hashtable
不是强类型的 - 它可以容纳任何类型的对象,并且 JSON.NET 很可能序列化哈希表内容的字符串表示形式。
在您花太多时间修改 JSON.NET 序列化器/反序列化器来弥补这一点之前,您可能需要考虑切换您的 Hashtable
出门Dictionary<TKey, TValue>
.它在性能方面几乎相同,但为您提供了强类型集合的优势和安全性。
强类型集合将解决您的 Json.NET 反序列化问题,因为 Json.NET 可以从字典中推断类型。
Dictionary<TKey,TValue>
的使用在 Hashtable
is discussed here .
关于c# - 使用 Json.Net 序列化哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939880/