G1ant中JsonPath的length()方法未实现,如何获取数组长度?
解决G1ant中无法使用JsonPath length()函数获取数组长度的问题
我明白你遇到的困扰——G1ant的JsonPath实现确实不支持length()函数,直接调用会抛出"Array index expected"异常。针对你的场景,结合你使用的addon core 4.103.0.0和addon language 4.104.0.0版本,这里有两个可靠的替代方案:
方案1:提取数组后用内置length命令计算长度
先通过JsonPath提取目标数组,再用G1ant core内置的length命令获取元素数量,步骤简单且稳定:
♥jsonImage = ⟦json⟧‴{ "book" : [ { "name" : "Bambi"} , { "name" : "Cinderella" } ] }‴ // 提取整个book数组 ♥bookArray = ♥jsonImage⟦$.book⟧ // 使用length命令获取数组长度 ♥arrayLength = length ♥bookArray // 弹窗展示结果 dialog ♥arrayLength
这个方案完全依赖G1ant原生命令,不需要额外依赖,适配性强。
方案2:通过JavaScript eval计算数组长度
利用G1ant的eval命令调用JavaScript解析JSON并计算长度,适合需要对JSON做复杂操作的场景:
♥jsonImage = ⟦json⟧‴{ "book" : [ { "name" : "Bambi"} , { "name" : "Cinderella" } ] }‴ // 将JSON对象转为字符串形式 ♥jsonStr = ♥jsonImage⟦⟧ // 用JavaScript解析JSON并获取数组长度 ♥arrayLength = eval script ‴let jsonObj = JSON.parse('♥jsonStr'); jsonObj.book.length‴ language js // 弹窗展示结果 dialog ♥arrayLength
这种方法灵活性更高,如果你后续需要对JSON进行更多复杂处理,JavaScript的处理能力会更有优势。
两种方案都能正确返回示例中book数组的长度2,你可以根据自身场景选择合适的方式。
内容的提问来源于stack exchange,提问作者Jakub Kosmala
相关产品推荐
相关产品推荐

