在纽顿夫妇深深嵌套的JSON中找到深层儿童元素的方法



我有一个非常深的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

相关内容

  • 没有找到相关文章

最新更新