c# - 使用 Json.Net 序列化哈希表

标签 c# json json.net hashtable

我有一个哈希表,其键是整数类型,但是当使用 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/

相关文章:

php - FullCalendar JSON Feed 不起作用 : my calendar doesn't put the data from the JSON feed onto my webpage

c# - 如果我只使用 JSON.Net,我可以安全地删除在我的 C# 模型类中指定后缀的字段和属性吗

c# - 我需要的 JSON.net 格式输出

c# - C# 中十进制类型的解析意外失败

php - 将 json_encode 应用于类时如何忽略特定值

c# - 如何使用 Json.NET 填充 IList 集合

c# - 用源代码替换对 Json.NET 的引用时无法编译项目

C# 如何使扩展接受 IEnumerable 而不是参数数组

c# - 如何使用泛型?

c# - 返回 Task<string> 的方法