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
相关产品推荐
相关产品推荐

