0

我正在使用 com.jayway.restassured.response.Response 类从 API 读取响应。它采用以下格式。有没有办法可以使用键名访问布局或区域的值。例如 - response.layout 或 response.regions?我尝试使用 JSONSlurper,但这不适用于 Response 类。任何帮助是极大的赞赏。

JSON Response :
{
layouts:
    [
        regions:
            [
                [
                    metadata:null, 
                    endDate:null, 
                    displayName:null, 
                    roles:[], type:100, 
                    widgets:[], 
                    structure:100, 
                    repositoryId:headerRegionHomePage, 
                    name:header,
                    width:12, 
                    audiences:[], 
                    startDate:null, 
                    height:300
                ],
                [
                    structure:100, 
                    type:101, 
                    widgets:[], 
                    width:12
                ], 
                [
                    metadata:null, 
                    endDate:null, 
                    displayName:null, 
                    roles:[], 
                    type:102, 
                    widgets:[], 
                    structure:100, 
                    repositoryId:footerRegionHomePage, 
                    name:footer, 
                    width:12, 
                    audiences:[], 
                    startDate:null, 
                    height:300
                ]
            ],
        ]
    }
4

3 回答 3

0
    String RequiredvaluefromJSON = new JsonPath(RestAssured.
                    given().
                    get("URI").
                    andReturn().
                    asString()).get("Layout.regions");
            System.out.println(RequiredvaluefromJSON);

Given your API in URI, this will fetch you the regions[] from JSON. Let me know if this is of any use.
于 2018-07-24T08:49:43.157 回答
0

一种优雅的方法可能是使用反序列化。

为响应 json 创建一个 POJO。您可以使用 Gson/Jackson 反序列化您对类类型的响应,或者 Rest Assured 还提供了用于反序列化的内置机制。

Response response = request.post("/");
ResponseBody body = response.getBody();

    // Deserialize the Response body into ClassType
ClassName responseBody = body.as(ClassName.class);

让 getters() 从响应中提取相应的字段名称。

于 2018-07-28T07:01:13.687 回答
0

尝试将 API 响应直接转换为 json 数组:
JSONArray JSONResponseBody = new JSONArray(response.body().asString());
然后您应该能够访问键以检索所需的值。

于 2018-07-23T23:35:33.607 回答