C# JSON.NET:当键包含点时获取嵌套值?

C# JSON.NET:当键包含点时获取嵌套值?,c#,json.net,C#,Json.net,我想使用JSON.NET访问嵌套值。我知道我可以使用.SelectToken()方法访问嵌套值(例如,请参阅或)。我的问题是,我试图访问的JSON中有带点的键: var json = @" { ""data.dot"": { ""value"": 5, } }"; var jo = JObject.Parse(json); Console.WriteLine(jo.SelectToken("data.dot.value")); // <-- doesn't work v

我想使用JSON.NET访问嵌套值。我知道我可以使用
.SelectToken()
方法访问嵌套值(例如,请参阅或)。我的问题是,我试图访问的JSON中有带点的键:

var json = @"
{
  ""data.dot"": {
    ""value"": 5,
  }
}";

var jo = JObject.Parse(json);
Console.WriteLine(jo.SelectToken("data.dot.value")); // <-- doesn't work
var json=@”
{
“”数据点“”:{
“值”:5,
}
}";
var jo=JObject.Parse(json);

Console.WriteLine(jo.SelectToken(“data.dot.value”);// 我在写这个问题时找到了答案,所以我不妨分享一下我的发现

事实证明,
.SelectToken
方法非常强大,并且:

  • ['{key}']
就我而言,我可以写:

jo.SelectToken("['data.dot'].value"); // escaped property
jo.SelectToken("$..value"); // complex JSON path
我也可以使用
JToken
索引器,但与
.SelectToken
方法相反,如果JSON不包含
数据,它将抛出异常。点
键:

jo["data.dot"]["value"]