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

Karate框架如何在JSON变量中插入动态数组?

解决JSON模板中插入动态数组的问题

你的问题核心在于hostsArray被定义成了JSON字符串,而非数组对象,导致插入模板后要么出现语法错误,要么hosts字段变成字符串而非数组结构。以下是两种可行的解决方法:

方法一:直接定义数组对象

如果可以直接构建数组而非字符串,直接把hostsArray定义为数组类型,无需用引号包裹:

# 直接定义数组对象,而非字符串
* def hostsArray = [{"hostid": "1234"},{"hostid": "4567"}, {"hostid": "9865"}]

* def myjson =
"""
{
  "key1": "val1",
  "params" : {
     "key2": "val2",
     "hosts" : #(hostsArray)
  }
}
"""

此时#(hostsArray)会直接将数组插入到JSON模板中,生成你预期的结构。

方法二:解析字符串为数组对象

如果hostsArray只能是动态生成的字符串,需要先将其解析为JSON数组对象,再插入模板:

# 动态生成的JSON字符串
* def hostsArray = '[{"hostid": "1234"},{"hostid": "4567"}, {"hostid": "9865"}]'
# 将字符串解析为JSON数组
* def hostsObj = karate.json(hostsArray)

* def myjson =
"""
{
  "key1": "val1",
  "params" : {
     "key2": "val2",
     "hosts" : #(hostsObj)
  }
}
"""

通过karate.json()函数将字符串解析为数组对象后,再插入模板就能得到正确的数组结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:43:12