Java 使用GPath和Rest-Assured从响应元素获取值

Java 使用GPath和Rest-Assured从响应元素获取值,java,json,rest-assured,serenity-bdd,gpath,Java,Json,Rest Assured,Serenity Bdd,Gpath,我想从我的响应中获取状态的值。这样我才能坚持下去。我使用的是java和serenity BDD中的rest assured 响应 { "locationType": "STORE", "locationId": "0003", "events": { "66e326db-fbfb-4f6e-9d2b-9425e7test5": {

我想从我的响应中获取
状态的值。这样我才能坚持下去。我使用的是java和serenity BDD中的rest assured

响应

{
    "locationType": "STORE",
    "locationId": "0003",
    "events": {
        "66e326db-fbfb-4f6e-9d2b-9425e7test5": {
            "status": "BOOKING_OPEN"
        }
    }
}
Response response = SerenityRest.lastResponse();
        final ValidatableResponse validatableResponse = response.then();
        validatableResponse.assertThat().body("events.*.status", containsString(expectedResponse));
因此,这里的
事件id(66e326db-fbfb-4f6e-9d2b-9425e7test5)
是动态的,这意味着每次运行时,此UUID都会得到更改

代码

{
    "locationType": "STORE",
    "locationId": "0003",
    "events": {
        "66e326db-fbfb-4f6e-9d2b-9425e7test5": {
            "status": "BOOKING_OPEN"
        }
    }
}
Response response = SerenityRest.lastResponse();
        final ValidatableResponse validatableResponse = response.then();
        validatableResponse.assertThat().body("events.*.status", containsString(expectedResponse));
当我运行此程序时,我从serenity BDD获得了无法识别的异常。我认为,在JSON中进行遍历存在一些问题
有人能帮我了解一下这里的状态值吗?所以在这种情况下,我在寻找
预订\u OPEN

我认为您应该将UUID存储为一个变量,并根据响应更改定位器

response.getBody().jsonPath().get("events."+yourUUID+".status");
您的
正文(“事件”)
是否会返回事件列表?试着先迭代它们,然后对每个事件达到
状态。