【发布时间】:2015-03-12 10:56:36
【问题描述】:
我有一个哈希表,其键是整数类型,但是当使用 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; }
}
【问题讨论】:
-
你是如何反序列化哈希表的?可以出示一下代码吗?
-
我已经编辑了我的问题
-
你能把 MyType 类也发一下吗?至少公共属性...
-
代码不完整。 MyType 的定义在哪里?请发布生成的 Json 字符串,虽然我怀疑键 被 序列化为字符串,即包含在
". -
Json 不提供任何模式,因此不擅长保留类型。
1的密钥与"1"一样有效。除非您在反序列化时指定所需的类型,否则 Json.NET(或任何其他库)将选择最合适的类型 -1为 int,"1"为 string。 HashTable 的键是一个对象,即未指定。如果你想要一个特定的键,你应该使用像 Dictionary 或 MultiValueDictionary<> 这样的类
标签: c# json json.net hashtable