You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JToken获取JSON数组的长度?

如何使用JToken获取数组的长度?

你的问题核心在于JPath(Newtonsoft.Json中SelectToken使用的路径语法)不支持JavaScript风格的.length写法,这就是为什么用rawRequest.asset.length作为路径时返回null的原因。下面给你两种可行的解决方案,你可以根据需求选择:

方案一:修改param为JPath支持的语法

JPath提供了Count()聚合函数来获取数组的元素数量,只需要把你的param改成rawRequest.asset.Count()即可直接通过SelectToken拿到长度值:

// 先修正JSON格式(原始JSON的键和字符串值必须用双引号,否则JToken.Parse会报错)
var jsonString = @"{""rawRequest"": {""asset"": [""123"", ""456""]}}";
var param = "rawRequest.asset.Count()"; // 调整为JPath支持的Count()方法

JToken token = JToken.Parse(jsonString);
JToken valueToken = token.SelectToken($"$.{param}");
var count = valueToken.Value<int>(); // 此时count的值为2,符合预期

方案二:不修改param,先获取数组再取长度

如果你不想改动现有的param字符串,可以先提取出数组的路径(去掉末尾的.length),获取到数组对应的JToken后,直接访问它的Count属性:

var jsonString = @"{""rawRequest"": {""asset"": [""123"", ""456""]}}";
var param = "rawRequest.asset.length";

// 处理param,提取数组的路径
var arrayPath = param.Substring(0, param.LastIndexOf(".length"));

JToken token = JToken.Parse(jsonString);
JToken arrayToken = token.SelectToken($"$.{arrayPath}");

// 直接获取数组元素数量
var count = arrayToken.Count; // 结果为2

额外提醒

你的原始jsonString格式不合法:JSON要求键名和字符串值必须用双引号包裹,而不是单引号或无引号。如果直接用你原来的字符串,JToken.Parse会抛出解析异常,所以一定要先修正JSON格式哦。

内容的提问来源于stack exchange,提问作者A. Gladkiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:04:09