我有一个这样的对象:
public class Context
{
public Dictionary<string, object> Arguments { get; set; }
}
我使用这种方法对其进行序列化:
private static string Serialize(object obj)
{
return JsonConvert.SerializeObject(obj, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});
}
我将它反序列化为:
public Context DesirializeContext
{
get
{
return JsonConvert.DeserializeObject<EventContext>(Context, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});
}
}
问题在于,当我尝试反序列化它时,字典中的值不具有正确的类型。
例如,如果我有{&#34; key1&#34;,1}和{&#34; key2&#34;,objectb},则在反序列化后,值的类型将为Int64和Newtonsoft.Json .Linq.JArray。
现在我知道我可以使用下面的代码将值转换为目标对象(在这种情况下我的目标类型是DataTable)
(DataTable)JsonConvert.DeserializeObject(Arguments["SubstituteData"].ToString(), typeof(DataTable));
但是,无论如何在预期时自动将字典中的值转换为原始类型?这会让事情变得更容易。