加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Json.NET中查找任何节点

发布时间:2020-12-16 19:52:23 所属栏目:百科 来源:网络整理
导读:我正在使用NewtonSoft Json.NET库来解析.NET应用程序中的 JSON文件. 我需要做的是传递节点的名称,并获取节点(如果存在),无论其事先未知的级别如何. 例如在一个文件中: string json = @"{ ""Name"": ""Apple"",""Expiry"": new Date(1230422400000),""Price"
我正在使用NewtonSoft Json.NET库来解析.NET应用程序中的 JSON文件.
我需要做的是传递节点的名称,并获取节点(如果存在),无论其事先未知的级别如何.

例如在一个文件中:

string json = @"{
  ""Name"": ""Apple"",""Expiry"": new Date(1230422400000),""Price"": 3.99,""ATest"": {
    ""MyTest"":
    [
       ""blah"",""blah""
    ]
  }
}";

有没有办法只使用值“MyTest”来获取该节点而不必知道像jObject [“ATest”] [“MyTest”] [0]那样的父名称?

AFAIK对于JToken / JObject没有类似XPath的查询语法,但你可以很容易地创建一个 – 请参阅下面的代码.
public static class StackOverflow_13033174
{
    public static void Test()
    {
        string json = @"{ 
                          ""Name"": ""Apple"",""ATest"": { 
                            ""MyTest"": 
                            [ 
                               ""blah"",""blah"" 
                            ] 
                          } 
                        }";

        JObject jo = JObject.Parse(json);
        JToken myTest = jo.Descendants()
            .Where(t => t.Type == JTokenType.Property && ((JProperty)t).Name == "MyTest")
            .Select(p => ((JProperty)p).Value)
            .FirstOrDefault();
        Console.WriteLine(myTest);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读