Dot-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]?
JTokenAFAIK 對於/沒有類似 XPath 的查詢語法JObject,但您可以相當輕鬆地製作一個 - 請參見下面的程式碼。public static class StackOverflow_13033174 { public static void Test() { string json = @"{ ""Name"": ""Apple"", ""Expiry"": new Date(1230422400000), ""Price"": 3.99, ""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); } }