【问题标题】:JSON.NET: Getting nested value when key contains dots?JSON.NET:当键包含点时获取嵌套值?
【发布时间】:2020-04-17 17:26:29
【问题描述】:

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

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

var jo = JObject.Parse(json);
Console.WriteLine(jo.SelectToken("data.dot.value")); // <-- doesn't work

【问题讨论】:

    标签: c# json.net


    【解决方案1】:

    我在写这个问题的时候找到了答案,所以我不妨分享一下我的发现。

    原来.SelectToken方法很强大,而且:

    所以在我的情况下,我可以写:

    jo.SelectToken("['data.dot'].value"); // escaped property
    jo.SelectToken("$..value"); // complex JSON path
    

    我也可以使用JToken 索引器,但与.SelectToken 方法相反,如果JSON 不包含data.dot 键,它会抛出异常:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 2018-06-17
      相关资源
      最近更新 更多