我有一个键类型为整数的哈希表,但是使用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; }
}
1
和"1"
一样有效。除非在反序列化时指定所需的类型,否则Json.NET(或任何其他库)将选择最合适的类型 - 对于1
是int类型,对于"1"
是字符串类型。HashTable的键是一个未指定的对象。如果您想要一个特定的键,则应该使用类似Dictionary<>或MultiValueDictionary<>的类。 - Panagiotis Kanavos