c# - 如何计算数组json中的值
问题描述
我在下面有一个 JSON 代码:
{
"value": [
{
"name": "504896c031d2fcb9",
"location": "North Europe",
"properties": {
"state": "UNKNOWN",
"name": "504896c031d2fcb9",
"siteInstanceName": "504896c031d2fcb93ec",
"healthCheckUrl": null,
"machineName": "lw0s",
"containers": null
}
},
{
"name": "35aafa",
"location": "North Europe",
"properties": {
"state": "UNKNOWN",
"name": "35aafae",
"siteInstanceName": "35aafaeff",
"healthCheckUrl": null,
"machineName": "lw1s",
"containers": null
}
}
],
"nextLink": null,
"id": null
}
我已将 JSON 转换为动态的,如下所述:
string kq = reader.ReadToEnd();
dynamic jss = JsonConvert.DeserializeObject(kq);
我想知道如何计算 c# 中有多少个值?上面的例子有 2 个值
谢谢你。
解决方案
转换为JArray
和.Count
。
也许,如果value
不是数组类型,castedarray
将返回为null
。
您可以添加处理以检查它是否不是null
并获取.Count
。
dynamic jss = JsonConvert.DeserializeObject(kq);
JArray array = jss["value"] as JArray;
Console.WriteLine(array != null ? array.Count : 0);
示例程序(JsonConvert.DeserializeObject)
推荐:
由于您将 JSON 字符串反序列化为dynamic
,JsonConvert.DeserializeObject
因此它将返回JObject
类型的值。
我建议使用JObject.Parse
而不是JsonConvert.DeserializeObject<T>
(旨在转换为强类型对象)。
您可以阅读这个问题:JObject.Parse vs JsonConvert.DeserializeObject了解更多信息。
using Newtonsoft.Json.Linq;
JObject jss = JObject.Parse(json);
JArray array = jss["value"] as JArray;
Console.WriteLine(array != null ? array.Count : 0);
推荐阅读
- yocto - ntp recipe 没有安装 ntpdate 文件
- python - 如何在女服务员上为 Django 服务 Tornado?
- mongodb - 无法将类型 bson.Raw 转换为 BSON 文档:读取的长度超过了可用的字节数
- javascript - mapbox:在页面顶部向上滚动时激活缩放;缩小地图时向下移动页面
- javascript - Javascript 可选 0:0.75 与 0.75
- reactjs - React TypeError:无法解构属性,因为它未定义
- c# - 无法从 ComboBox 选择 C# 获取 IF 语句来更新 TextBlock
- mongodb - 我的 mongos 服务器崩溃,收到信号:11 (Segmentation fault) Mongo DB v3.4.16 on SUSE 11 SP4
- vert.x - 将vertx httpserver部署为worker verticle时如何获取等待处理的请求数?
- typescript - 如何监视 fetch/middleware 方法的调度