我有一个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);
}
}
我是初学者,请放心,我不确定我们是否可以实现同样的目标。任何帮助,将不胜感激。预先感谢。
答案 0 :(得分:2)
下面的代码将找到响应中存在的所有ID,并将其打印为4 5 6
List<Integer> ids = res.jsonPath().getList("data.id");
for(Integer i:ids)
{
System.out.println(i);
}
答案 1 :(得分:1)
可以通过将路径更改为 data.id
来完成df['new_customer_subscription'] = (df[['new_customer', 'y']] > 0).all(1).astype(int)
答案 2 :(得分:0)
您可以使用JsonPath通配符从response中提取数据,这样可以避免您每次有此要求时都编写代码,请在JsonPath下面使用从响应中提取ID列表:
$..id