Seien Sie Versichert: extrahieren Wert aus der Antwort Liste
Habe ich eine Liste zurückgegeben als Antwort. Ich müssen zu bekommen ein Element aus der Liste mit Produkt.name und tariffPlan.name.
[
{
"id": 123,
"product": {
"id": 1,
"code": "credit",
"name": "Credit"
},
"tariffPlan": {
"id": 1,
"code": "gold",
"name": "Gold"
}
},
{
"id": 234,
"product": {
"id": 2,
"code": "debit",
"name": "Debit"
},
"tariffPlan": {
"id": 1,
"code": "gold",
"name": "Gold"
}
}
]
Benutze ich Java8. Hier ist meine Methode. Ich habe die Liste der Card.class Elemente. Und dann muss ich einzelne Artikel aus der Liste mit angegeben "Produkt.name" und "tariffPlan.Namen".
public List<Card> getCardId(String productName, String tariffPlanName) {
return given()
.param("product.name", productName)
.param("tariffPlan.name", tariffPlanName)
.when().get("/").then()
.extract().jsonPath().getList("", Card.class);
}
Ist es möglich, es zu tun mit restAssured? Vielleicht verwenden .param-Methode wie in meinem Beispiel? Aber in meinem Beispiel .param-Methode wird ignoriert. Danke für Eure Ideen.
UPD. Meine Entscheidung ist:
public Card getCard(String productName, String tariffPlanName) {
List<Card> cardList = given()
.when().get("/").then()
.extract().jsonPath().getList("", Card.class);
return cardList.stream()
.filter(card -> card.product.name.equals(productName))
.filter(card -> card.tariffPlan.name.equals(tariffPlanName))
.findFirst()
.get();
}
Ich Java8 verwendet labdas. Aktualisierte Frage.
InformationsquelleAutor | 2017-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tatsächlich, Sie können, aber... Sie müssen handle der Deserialisierung Ausgabe von Standard-mapper becase wenn Sie versuchen, führen Sie die folgenden:
Werden Sie Versagen konvertieren HashMap zu Ihrem Objekt geben. Es geschieht, weil der mit gpath-Ausdruck in Weg stellt json ohne Anführungszeichen auf Schlüssel standardmäßig. So müssen Sie prettify es mit (Sie können es in
RestAssured
Standardwerte):Und als Ergebnis Ihrer wäre in der Lage zu werfen, dass Dinge wie:
Siehe vollständige Beispiel:
einfach erneut ausführen, wird dieser test in meinem test-Projekt, arbeitet als exepected. Haben Sie die Option annotation processing?
InformationsquelleAutor RocketRaccoon
Wenn Sie brauchen, um einen Wert aus der Antwort der json-Liste, hier ist was für mich gearbeitet:
InformationsquelleAutor Sofia Temnyk
Angenommen, Sie möchten Holen Sie den Wert der id, bei der Produkt-name ist "Kredit" und tariffPlan ist "Gold".
Verwenden
Wobei url - http/https-Anforderung und -
get(url).asString()
wird wieder eine JSON-Antwort als string.InformationsquelleAutor Himanshu Dhamija