J'ai une réponse JSON et je souhaite extraire la liste des valeurs de la réponse pour, par exemple, toutes les valeurs des identifiants présents.
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);
}
}
J'ai essayé le code ci-dessous mais je n'ai pas réussi à le faire mais c'est N'imprimant que la première valeur de id, c'est-à-dire 4.
{
"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"
}
]
}
Je suis débutant, rassurez-vous également, je ne suis pas sûr que nous puissions réaliser la même chose. Toute aide serait appréciée. Merci d'avance.
3 Réponses :
Cela peut être fait en changeant votre chemin en data.idList<Integer> ids = res.jsonPath().getList("data.id");
Integer id = ids.get(0);
Le code ci-dessous trouvera tous les identifiants présents dans la réponse et affichera le résultat comme 4 5 6
List<Integer> ids = res.jsonPath().getList("data.id");
for(Integer i:ids)
{
System.out.println(i);
}
@ Al.G, j'excepterai la réponse après 2 jours car je ne peux pas accepter ma propre réponse avant 2 jours
@DimaKozhevin Code édité avec information.Merci pour la suggestion.
Vous pouvez utiliser les caractères génériques JsonPath pour extraire les données de la réponse, ce qui vous évitera d'écrire du code à chaque fois que vous avez une telle exigence, utilisez ci-dessous JsonPath pour extraire la liste des identifiants de votre réponse:
$..id
p >