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

时间:2013-03-03 23:30:14

标签: c# linq json.net

我有一些这样的JSON(从字典序列化):

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

并希望将JSON.NET的JSON用于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 个答案:

答案 0 :(得分:15)

这应该适合你:

string json = "{\"Context\":{\"Test\": \"Test\"}}";
var obj = JObject.Parse(json);
var dict = obj["Context"].ToObject<Dictionary<string,string>>();