c# - 在 C# 中计算 Jarray
问题描述
我需要在 httptrigger 函数中计算来自请求体的数据。数据作为对象类型出现。我正在反序列化 reqd 主体,如下所示。以下是我在 req.body 中获取的对象类型数据。
{
"Response": [
{
"id": "1",
"name": "Warburtons Medium Sliced Soft White Bread 400g",
"description": "Warburtons Medium Sliced White 400G",
"brand": "Warburtons",
"ean": "123",
"mediaStorageKey": "b",
"maxQuantity": 6,
"price": 0.95,
"size": 400,
"sizeUnits": "Grams"
},
{
"id": "a",
"name": "Co-op Orvieto Classico 75cl",
"description": "Co-op Orvieto Classico 75CL",
"brand": "Co-op",
"ean": "489",
"mediaStorageKey": "c",
"maxQuantity": 6,
"price": 5.5,
"size": 75,
"sizeUnits": "Centilitres"
},
{
"id": "kl",
"name": "Co Op Garden Peas in Water 290g",
"description": "Co-op Garden Peas 290G",
"brand": "Co Op",
"ean": "678",
"mediaStorageKey": "f",
"maxQuantity": 6,
"price": 0.45,
"size": 175,
"sizeUnits": "Grams"
}
]
}
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic body = JsonConvert.DeserializeObject(requestBody);
dynamic data = body["Response"];
直到这个我得到如下数据。
{[{"id":"1","name":"b"},{"id":"f","name":"j"}]}
但现在我无法计算在这种情况下给出 2 的这些数据,因为我必须申请循环。也没有Count
,Count()
在这里工作。我收到以下错误。
Newtonsoft.Json.Linq.JValue
不包含定义Count
解决方案
使用这两个字段创建一个类,id
然后name
public class Item {
public Int Id {get; set;}
public String Name {get; set;}
}
并指定反序列化值的类型:
dynamic body = JsonConvert.DeserializeObject(requestBody);
var rows = JsonConvert.DeserializeObject<List<Item>>(body["Response"]);
现在你可以使用rows.Count();
推荐阅读
- google-maps - 将 NOAA 图表与 Google 地图结合使用
- c++ - 减去数组中的每个元素并找到其中最大的
- node.js - MongoDB 更新数组中的数组对象
- python - 求解二阶 ODE,然后绘制绘图。返回的数组大小与我需要的不匹配
- html - 将页面底部的页脚与固定的 html 页面高度对齐
- android - Room databaseBuilder 构建崩溃
- java - 无法连接到 MongoDB 数据库(过早到达流的末尾)
- c# - 具有代码的实体框架首先不初始化外键类成员
- python - 如何修复“系统错误:
在 Python C 扩展中返回 NULL 而不设置错误” - c++ - 如何创建外部不可修改的变量?