【发布时间】:2019-11-06 08:58:29
【问题描述】:
我得到了来自 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.id 和response.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]
【问题讨论】:
-
“好像是一个字符串。” 正确。
rawAttr是 JSON。你需要解析它。 -
@Tomalak 也会尝试这种方式。但我认为空手道有一些很好的特征来提取数据。
标签: json jmeter karate json-path-expression