我正在使用com.jayway.restassured.response.Response类从API读取响应。其格式如下。有没有一种方法可以使用键名访问layout或region的值。例如-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
]
],
]
}
答案 0 :(得分:0)
尝试将API响应直接转换为json数组:
JSONArray JSONResponseBody = new JSONArray(response.body().asString());
然后,您应该能够访问键以检索所需的值。
答案 1 :(得分: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.
答案 2 :(得分: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()从响应中提取相应的字段名称。