使用 JSON .NET 查询 JSON

Querying JSON with JSON .NET

{
   "kind": "folderTree",
   "data":
   [
       {
           "id": "IEAAALNZI7777777",
           "title": "Root",
           "childIds":
           [
               "IEAAALNZI4ADAKBQ",
               "IEAAALNZI4ADAMBQ",
               "IEAAALNZI4ADAMBR"
           ],
           "scope": "WsRoot"
       },
       {
           "id": "IEAAANE7I7777777",
           "title": "Root",
           "childIds":
           [
               "IEAAANE7I4AC2NTX"
           ],
           "scope": "WsRoot"
       },
       {
           "id": "IEAAALNZI7777776",
           "title": "Recycle Bin",
           "childIds":
           [
               "IEAAALNZI4ADALZ2",
               "IEAAALNZI4ADAL52",
               "IEAAALNZI4ADALR3"
           ],
           "scope": "RbRoot"
       }
   ]
}

我正在尝试查询以下 json 结构,搜索 child 项我想要 return 给定标题的 ID。

我正在尝试这样的事情:

var folder = json["data"].Children().Where(x => x["Title"] == "Root");

但我不确定语法是否正确

您可以使用 SelectTokens to query LINQ to JSON objects. It supports JSONPath query syntax including wildcards. You can then further narrow down the search with a Where 子句:

var folders = json.SelectTokens("data[*]").Where(t => (string)t["title"] == "Root").ToList();

如果您不想要额外的 Where 子句,它还支持基于 属性 值过滤数组条目:

var folders = json.SelectTokens("data[?(@.title == 'Root')]").ToList();

以上两者做同样的事情。顺便说一下,您的 JSON 中有两个标题为 "Root" 的文件夹,因此您的查询将 return 多个结果。