[英]How to convert JSON response to Java List- Using Rest Assured for API Testing
[英]Rest Assured: extracting list of values from Json Response using java
我有一個JSON響應,想從響應中提取值列表,例如id的所有當前值。
{
"page": 2,
"per_page": 3,
"total": 12,
"total_pages": 4,
"data": [
{
"id": 4,
"first_name": "Eve",
"last_name": "Holt",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"
},
{
"id": 5,
"first_name": "Charles",
"last_name": "Morris",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg"
},
{
"id": 6,
"first_name": "Tracey",
"last_name": "Ramos",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg"
}
]
}
我試過下面的代碼,但無法實現,但它只打印id的第一個值,即4。
public class Get_Request {
public static void main(String[] args) {
RestAssured.baseURI = "https://reqres.in/";
Response res = given()
.param("page", "2")
.when()
.get("/api/users")
.then()
.assertThat()
.contentType(ContentType.JSON)
.and()
.statusCode(200).extract().response();
/*String data = res.jsonPath().getString("data[0].first_name");
System.out.println(data);
*/
List<HashMap<String,Object>> allids = res.jsonPath().getList("data");
HashMap<String,Object> firstid = allids.get(0);
Object a = firstid.get("id");
System.out.println(a);
}
}
我是初學者,請放心,我也不確定我們是否可以實現同樣的目標。 任何幫助,將不勝感激。 提前致謝。
下面的代碼將找到響應中存在的所有ID,並將其打印為4 5 6
List<Integer> ids = res.jsonPath().getList("data.id");
for(Integer i:ids)
{
System.out.println(i);
}
可以通過更改data.id的路徑來完成
List<Integer> ids = res.jsonPath().getList("data.id");
Integer id = ids.get(0);
您可以使用JsonPath通配符從response中提取數據,這將在每次有此要求時免去編寫代碼的麻煩,請在JsonPath下面使用從響應中提取ID的列表:
$..id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.