空手道 JSON 过滤路径无法参数化
Karate JSON filter paths not able to be parametrize
我正在尝试动态替换以下表达式中的值 'US'。
配置中的位置是一个数组而不是 json 对象。
* def selectedConfig= $configs[?(@.configId=='US')]
#上面这个有效
但是我没有成功地把它变成一个动态表达式。我尝试了以下变体和 fe,请帮忙
* def activeConfigId = 'US'
* def selectedConfig= karate.jsonPath("$configs[?(@.configId=='" + activeConfigId + "')]")
我看到有人也问过类似的问题,但没有回答如何使这个表达式动态化。
Karate: parametric json path expressions
您需要更仔细地阅读文档和示例。这是一个有效的例子:
* def configId = 'US'
* def response = [{configId: 'AA', data: 'first'}, {configId: 'US', data: 'second'}]
* def selectedConfig = karate.jsonPath(response, "$[?(@.configId=='" + configId + "')]")
* match selectedConfig[0] == { configId: 'US', data: 'second' }
如果使用karate.jsonPath()
太难,请看karate.filter()
:
并且由于您似乎在尝试进行一些智能配置切换,请参考:
我正在尝试动态替换以下表达式中的值 'US'。 配置中的位置是一个数组而不是 json 对象。
* def selectedConfig= $configs[?(@.configId=='US')]
#上面这个有效
但是我没有成功地把它变成一个动态表达式。我尝试了以下变体和 fe,请帮忙
* def activeConfigId = 'US'
* def selectedConfig= karate.jsonPath("$configs[?(@.configId=='" + activeConfigId + "')]")
我看到有人也问过类似的问题,但没有回答如何使这个表达式动态化。 Karate: parametric json path expressions
您需要更仔细地阅读文档和示例。这是一个有效的例子:
* def configId = 'US'
* def response = [{configId: 'AA', data: 'first'}, {configId: 'US', data: 'second'}]
* def selectedConfig = karate.jsonPath(response, "$[?(@.configId=='" + configId + "')]")
* match selectedConfig[0] == { configId: 'US', data: 'second' }
如果使用karate.jsonPath()
太难,请看karate.filter()
:
并且由于您似乎在尝试进行一些智能配置切换,请参考: