使用LINQ to JSON将JSON反序列化为字典

9

我有一些类似这样的JSON数据(从字典序列化而来):

{
  "Context":
  {
    "Test": "Test"
  }
}

我希望使用JSON.NET的JSON to LINQ将其反序列化为字典。

我尝试了不同的方法:

var obj = JObject.Parse(json);
obj.Value<Dictionary<string, string>>("Context");

但是这会抛出以下异常:

System.InvalidCastException
无法将Newtonsoft.Json.Linq.JObject强制转换为Newtonsoft.Json.Linq.JToken

我也尝试了以下方法:

var obj = JObject.Parse(json);
var context = obj.Values("Context");

但是我无法想出如何将元素处理成字典。

1个回答

14
这对您应该有效:
string json = "{\"Context\":{\"Test\": \"Test\"}}";
var obj = JObject.Parse(json);
var dict = obj["Context"].ToObject<Dictionary<string,string>>();

2
你应该使用 JToken 上的 ToObject<T> 方法。 - Timothy Shields
你说得完全正确,我已经编辑了答案以反映这一点。 - JoshVarty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接