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 >