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

Karate框架中使用print关键字直接输出JsonPath表达式结果报错

问题原因

Karate的print语句默认直接执行JavaScript语法,而[*]是JsonPath特有的通配符语法,JavaScript本身不识别这种数组遍历写法,因此直接在print中写jsonObject.store.book[*].author会触发语法错误。

对比来看:

  • jsonObject.store.book[1].author能正常运行,因为[1]是标准的JavaScript数组索引语法,符合JS规范;
  • get关键字是Karate提供的专门用于解析JsonPath的指令,它会将后续的表达式当作JsonPath处理,而非普通JS代码,所以get jsonObject.store.book[*].author能正确解析。

解决方法

有三种可行的方式实现直接输出JsonPath结果:

1. 先通过get存储变量再打印(已验证可行)

这是你已经用到的方式,先将JsonPath结果存入变量,再打印变量:

* def allAuthors = get jsonObject.store.book[*].author
* print allAuthors

2. 使用Karate内置的jsonPath()函数

直接在print中调用jsonPath()函数解析表达式,第一个参数是目标JSON对象,第二个参数是标准JsonPath字符串:

* print jsonPath(jsonObject, '$.store.book[*].author')

3. 使用Karate的字符串模板语法

用#()包裹JsonPath表达式,Karate会自动解析模板内的JsonPath并替换为结果:

* print '#(jsonObject.store.book[*].author)'

内容的提问来源于stack exchange,提问作者AMOD MAHAJAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:08:21