c# - 在 C# 中查找 Json 数组中的特定项目
问题描述
我有一个 json 文件,我想在其中搜索设备(例如 AEVL2020),并将根据“寄存器”返回多个结果。我试图在网上搜索,但没有找到任何线索。所以我想要这样的输出:
"12":{
"user_id": "1",
"employee_id": "12",
"name": "Juan Dela Cruz",
"privilege": "0"
},
"32":{
"user_id": "2",
"employee_id": "32",
"name": "Pedro Dela Cruz",
"privilege": "0"
}
这是我的json:
{
"devices": {
"AEVL2020":{
"deviceSerialId": "AEVL2020"
},
"AEVL2021":{
"deviceSerialId": "AEVL2021"
}
},
"registers":{
"AEVL2020":{
"12":{
"user_id": "1",
"employee_id": "12",
"name": "Juan Dela Cruz",
"privilege": "0"
},
"32":{
"user_id": "2",
"employee_id": "32",
"name": "Pedro Dela Cruz",
"privilege": "0"
}
},
"AEVL2021":{
"29":{
"user_id": "1",
"employee_id": "29",
"name": "Maria Dela Cruz",
"privilege": "0"
},
"222":{
"user_id": "2",
"employee_id": "222",
"name": "Jay Dela Cruz",
"privilege": "0"
}
}
}
}
解决方案
使用 Newtonsoft.Json
var json = JObject.Parse("{\"devices\":{\"AEVL2020\":{\"deviceSerialId\":\"AEVL2020\"},\"AEVL2021\":{\"deviceSerialId\":\"AEVL2021\"}},\"registers\":{\"AEVL2020\":{\"12\":{\"user_id\":\"1\",\"employee_id\":\"12\",\"name\":\"Juan Dela Cruz\",\"privilege\":\"0\"},\"32\":{\"user_id\":\"2\",\"employee_id\":\"32\",\"name\":\"Pedro Dela Cruz\",\"privilege\":\"0\"}},\"AEVL2021\":{\"29\":{\"user_id\":\"1\",\"employee_id\":\"29\",\"name\":\"Maria Dela Cruz\",\"privilege\":\"0\"},\"222\":{\"user_id\":\"2\",\"employee_id\":\"222\",\"name\":\"Jay Dela Cruz\",\"privilege\":\"0\"}}}}");
var devices = json.Value<JObject>("devices");
var registers = json.Value<JObject>("registers");
foreach (var device in devices)
{
Console.WriteLine($"Device {device.Key}:");
Console.WriteLine(registers[device.Value.Value<string>("deviceSerialId")]);
}
我有你想要的输出
Device AEVL2020:
{
"12": {
"user_id": "1",
"employee_id": "12",
"name": "Juan Dela Cruz",
"privilege": "0"
},
"32": {
"user_id": "2",
"employee_id": "32",
"name": "Pedro Dela Cruz",
"privilege": "0"
}
}
Device AEVL2021:
{
"29": {
"user_id": "1",
"employee_id": "29",
"name": "Maria Dela Cruz",
"privilege": "0"
},
"222": {
"user_id": "2",
"employee_id": "222",
"name": "Jay Dela Cruz",
"privilege": "0"
}
}
ps:可能你会从文件中读取json,所以将第一行替换为
var json = JObject.Parse(File.ReadAllText("file.json"));
推荐阅读
- typescript - Unpacked 的递归版本
在打字稿中? - python - 在序列化字段之间共享数据
- c# - 如何在反射的方法中找到枚举的所有用法
- woocommerce - 从 woocommerce 中的运输区域获取邮政编码和区域名称
- python - 使用 PIL 测量文本的高度
- java - 在Spring @Component 中使用@PostContruct 来初始化数据
- javascript - 如果我将按钮放在框元素下方,则切换按钮不起作用
- asp.net-mvc - 我如何为 List 实现 DropDownListFor
>> - python - ValueError:无法使用给定的会话来评估张量:张量的图表与会话的图表不同
- android - 回压时过滤器自动重置