我有一个嵌套非常深的JSON文件,如下所示:
{
// many levels of nesting, from 10 to 50
items: [{
video: { // some data }
}, {
video: { // some data }
}]
}
我知道我可以使用json.SelectTokens("long path here")
选择那些video
元素。但是,当您想在各处使用大量嵌套的JSON文件时,效率不高且对开发人员不友好。
为此,我们是否还有其他更简单的路径,例如CSS选择器?
答案 0 :(得分:1)
您可以使用 LINQ 和 Descendants 方法搜索嵌套对象。
const string json = @"{
items: [{
video: { id: 1, title: 'Video 1' }
}, {
video: { id: 2, title: 'Video 2' }
}]
}";
var videos = JObject.Parse(json)
.Descendants()
.Where(x => x is JObject && x["id"] != null)
.ToList();
var video = videos.Find(x => (int) x["id"] == 1);
从上方执行代码时,video
变量包含以下内容:
{ "id": 1, "title": "Video 1" }
答案 1 :(得分:0)
我认为,一种更简单的方法是使用SelectToken / SelectTokens,它们使用JSONPath深入查看对象。
var video = o.SelectToken("$.items[?(@.id == 1)]");
阅读以获取更多信息:
https://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenJsonPath.htm