在Json.NET中查找任何节点

前端之家收集整理的这篇文章主要介绍了在Json.NET中查找任何节点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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);
    }
}

猜你在找的Json相关文章