1

我如何使用 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))
4

1 回答 1

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 的值作为列表返回。然后我们反转列表,因为它似乎是最后一个运行 collect 时结果列表将首先具有最后一个值。然后我们从该列表中获取第一个值(在您的示例中为 data.2),最后获取名称。

于 2014-07-15T17:48:10.863 回答