创建路径以从数组中获取特定对象

Create path to get a specific object from an array

我想从图像中突出显示的 JSON 中获取值。 任何人都可以帮助我,我怎样才能建立一条路径来获得这些价值。 使用我的代码 returns 我所有的 id,但我只需要数组中的第二个对象。 有关详细信息,我在图片中留下了示例。

JSON Structure

我正在使用 Restassured 来做到这一点。

public static List<String>  JSON_UltimateParent(String parent) { 
        baseURI = uri;
        List<List<String>>  LinkedListUltimate = 
                    given() 
                        .auth().basic(getJiraUser(), getJiraPass())
                        .param("limit", "74000000")
                        .param("count", "false")
                        .param("sort", "accountId")
                    .when()
                        .get("/counterparties.json?"+ parent)
                    .then() 
                        .extract().path("riskUltimateParent.identifier.id"); 

        List<String> ultimates = linkedList_To_List(LinkedListUltimate);
                    
        return ultimates;
    }

This method make the parse to list

public static List<String> linkedList_To_List(List<List<String>> response){
        List<String> accountIds = response.stream().flatMap(l-> l.stream()).collect(Collectors.toList());
        return accountIds;
    }

截图中分享的JSON应该有效。 以下是有效版本:

{
"riskUltimateParent" : 
[{
    "name": "Test1",
    "identifier" : [{"id":1,"type":"abcd1"},{"id":2,"type":"abcd2"},{"id":3,"type":"abcd3"}]
},
{
    "name": "Test2",
    "identifier" : [{"id":4,"type":"abcd4"},{"id":4,"type":"abcd5"},{"id":6,"type":"abcd6"}]
}]
}

您要找的JSON路径应该是extract().path("riskUltimateParent[:].identifier[1]");

如果需要id或类型:

extract().path("riskUltimateParent[:].identifier[1].id");  
extract().path("riskUltimateParent[:].identifier[1].type"); 

我使用jsonpath jayway,这是示例代码:

String res = given()...asString();
List<String> ids = JsonPath.read(res, "$..identifier[?(@.type == 'CLIENTREF')].id");
System.out.println(ids);
//["AVIVANVS","DAVIDSNKC"]

pom.xml

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.6.0</version>
</dependency>