使用json-everything库时JSONPath length()函数无法返回数组长度
解决JSONPath length()函数获取数组长度的问题
问题分析
你测试的两条JSONPath存在两个关键错误:
- 路径匹配错误:测试JSON中的数组字段是
array,但你写的是foo,无法定位到目标数组; - 语法不符合规范:
$[length(@.foo)]和$.foo.length()的写法不满足json-everything支持的JSONPath语法要求。
正确的JSONPath写法
针对你的测试JSON:
{ "array": [1,2,3] }
获取数组长度的正确JSONPath有两种写法:
$.array.length()
或者:
length($.array)
将上述路径输入json-everything的测试页面即可得到正确结果3。
关于json-everything库的注意事项
json-everything从0.30版本开始支持length()函数,需确保使用的是该版本及以上,且遵循JSONPath 2023规范的函数调用语法。
Newtonsoft.Json的替代方案
由于Newtonsoft.Json不支持JSONPath聚合函数,若无法切换库,可通过代码逻辑直接获取数组长度:
JObject jsonObj = JObject.Parse(yourJsonString); int arrayLength = jsonObj["array"].Count();
内容的提问来源于stack exchange,提问作者vmardian
相关产品推荐
相关产品推荐

