find
次の JSON 応答の匿名ボディがあり、ネストされた配列を動的に解析して、findAll
グルービーのクロージャーを使用して条件に基づいてキーの値を取得する必要があります
[
{
"children": [
{
"attr": {
"reportId": "1",
"reportShortName": "ABC",
"description": "test,
}
},
{
"attr": {
"reportId": "2",
"reportShortName": "XYZ",
"description": "test",
}
}
}
]
次の方法を試しましたが、JSON 応答から reportId キーの値を取得できませんでした
package com.src.test.api;
import static io.restassured.RestAssured.given;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
public class GetReportId {
public void getReportId(String reportName) throws Exception {
String searchReports = "http://localhost:8080/reports";
Response resp=given().request().when().get(searchReports).then().extract().response();
JsonPath jsonPath = new JsonPath(resp.asString());
String reportId1 =jsonPath.get("$.find{it.children.contains(restAssuredJsonRootObject.$.children.find{it.attr.reportShortName == 'ABC'})}.attr.reportId");
String reportId2 = jsonPath.get("$.find{it.children.attr.reportShortName.contains(restAssuredJsonRootObject.$.children.find{it.attr.reportShortName.equals('XYZ')}.attr.reportShortName)}.attr.reportId");
System.out.println("ReportId: " + reportId1);
}
}
親の匿名配列に複数の JSON オブジェクトが存在する可能性があり、レポート ID を取得するには、groovy クロージャー内で find または findAll を使用する必要があります。
を取得する必要がありますがreportId
、何か問題があるようです。どんな助けでも大歓迎です。