c# - C# 有条件地循环遍历 JSON 值
问题描述
我对此并不陌生,如果这是一个重复的问题,我深表歉意。在这一点上,我已经尝试了很多不同的东西,我不确定这样做的正确方法。
我正在尝试编写一个函数来循环 aJSON
并在某些条件下获取模型的值(即:qty != null
, 和sector = 1
, position = 1
.
我还需要计算每个独特模型的出现次数。任何帮助将不胜感激。
这是看起来的JSON
样子。
[ { "sector": "1", "position": "1", "qty": "1", "model": "SBNHH-1D65C" },
{ "sector": "2", "position": "1", "qty": "1", "model": "" },
{ "sector": "3", "position": "1", "qty": "1", "model": "DC6-48-60-18-8F" },
{ "sector": "1", "position": "2", "qty": "1", "model": "SBNHH-1D65C" },
{ "sector": "2", "position": "2", "qty": "1", "model": "DC6-48-60-18-8F" } ]
public class AntennaItems
{
public AntennaItems[] root { get; set; }
public int sector { get; set; }
public int position { get; set; }
public string qty { get; set; }
public string model { get; set; }
}
string requestBodyString = await new StreamReader(req.Body).ReadToEndAsync();
var newJsonString = @"{root:" + requestBodyString + @"}";
List<string> modelList = new List<string>();
var jsonObj = JsonConvert.DeserializeObject<AntennaItems>(newJsonString);
foreach (var elem in jsonObj.root)
{
modelList.Add(elem.model);
}
return new OkObjectResult($"modelList = {modelList}");
目前我收到以下回复:
modelList = System.Collections.Generic.List`1[System.String]
解决方案
我认为您不需要 root 属性。我稍微修改了类并从中删除了 root 属性:
public class AntennaItems
{
public int sector { get; set; }
public int position { get; set; }
public string qty { get; set; }
public string model { get; set; }
}
public HttpResponse ParseJson()
{
string requestBodyString = await new StreamReader(req.Body).ReadToEndAsync();
var newJsonString = @"{root:" + requestBodyString + @"}";
List<string> modelList = new List<string>();
var jsonObj = JsonConvert.DeserializeObject<List<AntennaItems>>(newJsonString);
foreach (var elem in jsonObj)
{
modelList.Add(elem.model);
}
return new OkObjectResult($"modelList = {modelList}");
}
您需要在 List 中对其进行反序列化。让我知道它是否有帮助。
推荐阅读
- flutter - 显示 Flutter 更改错误的下拉菜单。无法在 onchange 回调函数中设置状态
- excel - 从另一个工作表更改下拉选择时自动刷新过滤器
- powershell - 哈希表,键中的倍数值,Foreach 循环 Powershell
- python - 无法连接到服务器/找不到麦克风
- python - 单击在多个文件中读取类的按钮时如何创建多个 Tkinter 窗口?
- android - Mixpanel 在 React-native android 应用程序中不起作用
- php - Laravel-API 使用会话问题:Auth::id() 为空
- python - 使用 libVLC Python 录制 RTSP 流
- python - 在 Python 中,如果两个数据框具有不同值的同一列,如何在 Id 上合并多个数据框并在列中创建一个列表?
- django - MPTT-类别树子类别未显示类别