如何使用json路径获取name = status ...这里的问题是key = 2是随机数,,,是他们以任何方式跳过这些随机和读取名称
使用放心,这是GET请求的样本回复
回复
{
"error": false,
"message": "",
"data": {
"2": {
"name": "No Status",
"protected": "1",
"id": "1",
"temporal_start": "0",
"temporal_end": "2147483647"
},
"3": {
"name": "Started",
"protected": "1",
"id": "2",
"temporal_start": "0",
"temporal_end": "2147483647"
},
}
}
我的请求代码是
given()
.param("error", "false")
.when()
.get(URI)
.then()
.body("data.2.name", startsWith(No))
答案 0 :(得分:1)
我找到了一个解决方案,但它并不是很优雅:
when().
get(URI).
then().
body("data.collect { it.value }.reverse()[0].name", equalTo("No Status")).
body("data.collect { it.value }.reverse()[1].name", equalTo("Status"));
可以使用根路径简化:
when().
get(URI).
then().
root("data.collect { it.value }.reverse()[%d].name").
body(withArgs("0"), equalTo("No Status")).
body(withArgs("1"), equalTo("Status"));
说明: 由于数据是表示为HashMap的JsonObject,因此我们运行collect方法仅返回Map的值作为List。然后我们反转列表,因为它似乎是最后一次运行时收集结果列表将首先具有最后一个值。然后我们从这个列表中得到第一个值(在你的例子中是data.2),最后得到名字。