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

Xha*_*rze 9 c# linq json.net

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

{
  "Context":
  {
    "Test": "Test"
  }
}
Run Code Online (Sandbox Code Playgroud)

并希望使用JSON.NET的JSON到LINQ将其反序列化为字典.

我尝试过不同的东西:

var obj = JObject.Parse(json);
obj.Value<Dictionary<string, string>>("Context");
Run Code Online (Sandbox Code Playgroud)

但这会抛出这样的异常:

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

我也尝试过:

var obj = JObject.Parse(json);
var context = obj.Values("Context");
Run Code Online (Sandbox Code Playgroud)

但后来我无法弄清楚如何将元素处理成字典.

Jos*_*rty 15

这应该适合你:

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

  • 您应该使用JToken上的ToObject <T>方法. (2认同)