{
"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 结构,搜索我想要返回给定标题的 id 的子项。
我正在尝试这样的事情:
var folder = json["data"].Children().Where(x => x["Title"] == "Root");
但我不确定语法是否正确
最佳答案
您可以使用SelectTokens
查询LINQ to JSON对象。它支持JSONPath query syntax包括通配符。然后,您可以使用 Where
进一步缩小搜索范围。子句:
var folders = json.SelectTokens("data[*]").Where(t => (string)t["title"] == "Root").ToList();
如果您不需要额外的 Where
子句,它还支持根据属性值过滤数组条目:
var folders = json.SelectTokens("data[?(@.title == 'Root')]").ToList();
以上两者都做同样的事情。顺便说一句,您的 JSON 中有两个标题为“Root”的文件夹,因此您的查询将返回多个结果。
关于c# - 使用 JSON .NET 查询 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755045/