我正在使用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); } }