1

我得到了来自 REST API 的响应,但我发现很难从收到的响应中提取标签值并将其分配给一个变量以便稍后在脚本中使用它。
这是回应::

{
  "result": "SUCCESS",
  "rawAttr": "[{\"attributes\":[{\"name\":\"resourceid\",\"value\":\"7A7Q123456\"},{\"name\":\"physicalid\",\"value\":\"7A7Q123456\"},{\"name\":\"dsw:label\",\"value\":\"MY Product00004285\"},{\"name\":\"dsw:created\",\"value\":\"2019-11-06T08:39:39Z\"}]}]",
  "physicalid": "7A7Q123456",
  "contextPath": "/path",
  "id": "7A7Q123456",
  "message": null
}

我能够得到response.idresponse.result这对验证有帮助,但我无法得到dsw:label value哪个是MY Product00004285

当我这样做时def Arr = response.rawAttr,无论是数组还是字符串,我都会得到以下值,我很困惑。似乎它是一个字符串。

[{"attributes":[{"name":"resourceid","value":"7A7Q123456"},{"name":"physicalid","value":"7A7Q123456"},{"name":"dsw:label","value":"MY Product00004298"},{"name":"dsw:created","value":"2019-11-06T08:39:39Z"}]}]

使用下面的 JSON 路径表达式很容易在 JMeter JSON Extractor 中提取标签 $.attributes.value[2]

4

2 回答 2

1

参考空手道的类型转换能力:https ://github.com/intuit/karate#type-conversion

所以你可以这样做:

* json attr = response.rawAttr

然后你就准备好了。

于 2019-11-06T09:51:19.553 回答
0

感谢有关将字符串转换为 json 的示例和文档。
知道怎么办了。

And def strVar = response.rawAttr
And json jsonVar = strVar
And def attrb = karate.jsonPath(jsonVar, '$..attributes.[2].value')[0]
And print '\n\n Attrb\n', attrb

我提到的链接:
Json Path evaluator
Karate doc reference for type-conversion
Karate example for type-conversion

于 2019-11-06T09:54:02.743 回答