c# - 根据属性值从 JObject 返回子对象
问题描述
我有一些 JSON,如下所示。我想从中获取“类型”为“项目”的所有对象。
string json = @"
{
'name': 'Object 1',
'content': {
'body': {
'id': 'body',
'type': 'Body'
},
'style': {
'id': 'style',
'type': 'Style'
},
'DynamicName-123': {
'id': 'DynamicName-123',
'type': 'Row'
},
'DynamicName-434': {
'id': 'DynamicName-434',
'type': 'Column'
},
'DynamicName-223': {
'id': 'DynamicName-223',
'type': 'Item'
}
}
}";
JObject obj = JObject.Parse(json);
预期输出:
'id': 'DynamicName-223',
'type': 'Item'
我怎样才能做到这一点?
解决方案
您可以使用如下所示的LINQ-to-JSON查询来获取“类型”属性值为“Item”的对象:
JObject obj = JObject.Parse(json);
List<JObject> items = obj["content"]
.Children<JProperty>()
.Where(p => (string)p.Value["type"] == "Item")
.Select(p => (JObject)p.Value)
.ToList();
推荐阅读
- python - 如何在 python 脚本中解码 FST 编码的 redis 键?
- json - JSONSchema - 元素可以单独出现,也可以在组内出现
- java - 使用 Spring Webclient 和 AsynchronousFileChannel 下载文件,文件为空
- plot - Rscript 无法从命令行绘制 xts
- javascript - 如何使用 JavaScript 将 JSON 子项与其父项合并
- python - 分离以保持 web 浏览器在 selenium webdriver python 中打开不工作
- sql - 在雪花中将 VARCHAR 转换为 DATE
- laravel - 使用 Laravel 进行 Firebase 身份验证
- firebase - 使用 Firebase Auth 检测用户是否从站点 B 登录到站点 A
- delphi - FMX TEdit 在 iOS 上无法接受 ASCII 单引号