空手道:当使用jsonPath时,是否有一种方法可以将特定值作为字符串而不是数组



空手道:当使用jsonPath

时,是否有一种方法可以获得一个特定的值作为字符串而不是数组我的要求是我试图从响应中获得一个特定的值,并试图使用jsonPath将其分配给另一个变量。但是该值被存储为数组值。相反,我需要该值存储为字符串,以便我可以在下一个请求中使用它作为查询参数

{
"firstName": "John",
"lastName": "doe",
"age": 26,
"address": {
"streetAddress": "naist street",
"city": "Nara",
"postalCode": "630-0192"
},
"phoneNumbers": [
{
"type": "iPhone",
"number": "0123-4567-8888"
},
{
"type": "home",
"number": "0123-4567-8910"
}
]}

使用下列jsonPath——$.[?]type == 'home')].number我得到[0123-4567-8910]。但是我需要的是直接存储数字(0123-4567-8910)。

解决方案如下:注意,JsonPath查询总是返回一个数组,您需要"unpack";:

* def numbers = $.phoneNumbers[?(@.type == 'home')].number
* def number = numbers[0]
* match number == '0123-4567-8910'

为了完整起见,这里有一种仅使用JavaScript的方法:

* def found = response.phoneNumbers.find(x => x.type == 'home').number
* match found == '0123-4567-8910'