c# - 在 Newtonsoft 的深层嵌套 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 选择器?
解决方案
您可以使用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" }
推荐阅读
- ms-access - 使用IF查看多个字段返回一个设定值
- html - 如何处理来自 oauth2 令牌请求的 html 响应?
- google-sheets - 谷歌表格脚本从 YouTube API 中提取数据,无法获取频道 ID
- python - 如何在 for 循环 if 语句中处理“SettingWithCopyWarning”
- javascript - 保存文件后如何将用户重定向到另一个网页?
- node.js - 即使我将内容类型放在标题中,请求也会返回无效或不存在的内容类型
- spring - spring cloud stream文件源码app - 子目录下已处理文件和轮询文件的历史
- electron - Electron typeString() 上的 Robotjs 未按预期工作
- python - Python记录器PID在顶部不同
- java - 如何在Java中并行执行for-each循环中的语句?