在我的测试中,a的回答如下:
{
"commands": [
{
"type": "com.our.identity.patch",
"value": [
{
"op": "add",
"path": "/claims/gTwfQubKEl4r",
"value": [
"vcvWxlsLKV35"
]
},
{
"op": "add",
"path": "/claims/Jmq6zrG7LKoJ",
"value": [
"iiMQoOWKu2OI"
]
}
]
}
]
}
哪里 gTwfQubKEl4r
及 vcvWxlsLKV35
是键值对。
同样 Jmq6zrG7LKoJ
及 iiMQoOWKu2OI
键值对。
响应可以包括许多键值对。
我需要能够验证响应中是否显示了一些键和值。
我用 restassured java
所以我知道我可以使用这样的路径 commands.value.path
拿到钥匙 commands.value.value
要使用这些方法获取值,我编写了:
public String getValueFromResponseBody(Response res, String key){
return res.body().jsonPath().getString(key);
}
public void validateParameterValueInResponseBodyEquals(Response res, String param, String expectedValue){
String value = getValueFromResponseBody(res,param);
Assert.assertEquals(value,expectedValue);
}
从哪里经过 param
响应中的参数路径类似于 commands.value.path
.
但我认为这将为我带来响应体中匹配传递路径的第一个节点,同时我需要检查响应体中匹配该路径的所有节点。
可能吗?
1条答案
按热度按时间jtjikinw1#
我认为这将为我带来响应体中与传递路径匹配的第一个节点,同时我需要检查响应体中与该路径匹配的所有节点
不,它得到了所有的匹配。自从
commands
节点与value
节点都是数组,因此它将生成列表的列表。解决方案:
得到所有的
path
在一个查询中,您只需要List<List<String>>
-->List<String>
. 您可以尝试在流中使用flatmap或使用其他方法。还有一个选择:
您可以使用jsonpath(com.jayway.jsonpath.jsonpath)