使用Dictionary <string,object =“”>属性(Newtonsoft.Json)反序列化对象

时间:2017-08-24 18:01:45

标签: c# json dictionary serialization

我有一个这样的对象:

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));

但是,无论如何在预期时自动将字典中的值转换为原始类型?这会让事情变得更容易。

0 个答案:

没有答案