这是JSON响应:
[{
"startTime": "2020-07-21T15:20:00.000+00:00",
"endTime": "2020-07-21T15:40:00.000+00:00",
"availabilities": [{
"availabilityId": "eyJJZCI6MTA4N",
"startTime": "2020-07-21T15:20:00.000+00:00",
"endTime": "2020-07-21T15:40:00.000+00:00",
"channel": "PHONE",
"programId": "Msff",
"providerDetails": {
"firstName": "abc",
"lastName": "abc",
"providerTitle": "NURSE"
}
}]
}, {
"startTime": "2020-07-21T15:40:00.000+00:00",
"endTime": "2020-07-21T16:00:00.000+00:00",
"availabilities": [{
"availabilityId": "eyJJZCI6MTA4NDM2MiwiU3RhcnRUa",
"startTime": "2020-07-21T15:40:00.000+00:00",
"endTime": "2020-07-21T16:00:00.000+00:00",
"channel": "PHONE",
"programId": "Msff",
"providerDetails": {
"firstName": "def",
"lastName": "def",
"providerTitle": "NURSE"
}
}]
}]
这是我用来从json响应中提取第一个“ availabilityId”的检查
check(
jsonPath("$[0][availabilities].[0].availabilityId") saveAs "availabilityId"
)
但我遇到错误:
jsonPath($[0][availabilities].[0].availabilityId).find.exists extraction crashed: end of input expected
我在https://jsonpath.com/上验证了路径,我可以看到结果。我在做什么错了?
答案 0 :(得分:1)
这是JsonPath当前状态有多糟糕的一个示例:
在这里,如果您检查原始来源,您会发现正方形表示法应该使用单引号来包装字段名称:
JSONPath expressions can use the dot–notation
$.store.book[0].title
or the bracket–notation
$['store']['book'][0]['title']
这里发生的是,加特林实现坚持了这一定义,而jsonpath.com上使用的JavaScript允许放弃单引号。
此外,括号之间也不应该有圆点,因此路径应为:
$[0]['availabilities'][0].availabilityId
您还可以坚持使用更常见的点符号:
$[0].availabilities[0].availabilityId
有一个ongoing effort on creating a proper JsonPath implementation。在进行这项工作之前,我们从加特林(Gatling)建议改为使用JMESPath,如here所述。与JsonPath atm相反,JMESPath具有真正完整的语法和一致性测试套件。
答案 1 :(得分:0)
您已添加了不必要的方括号。更改jsonPath:
$.[0].availabilities.[0].availabilityId