我有一个非常深的json文件,如下:
{
// many levels of nesting, from 10 to 50
items: [{
video: { // some data }
}, {
video: { // some data }
}]
}
我知道我可以使用json.SelectTokens("long path here")
选择那些video
元素。但是,当您想在各个地方使用大量嵌套的JSON文件时,这并不有效且对开发人员友好。
我们是否有一个更轻松的路径,例如CSS-Selectors?
您可以使用 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" }
我认为的一种更简单的方法是使用selectToken/selectTokens使用jsonpath来深入对象。
var video = o.SelectToken("$.items[?(@.id == 1)]");
阅读此信息以获取更多信息:
https://www.newtonsoft.com/json/help/html/queryjsonselecttokenjsonpath.htm