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



我想从JSON中获得图像中突出显示的值。有人能帮我吗,我怎么才能建立一个路径来获得这些价值。使用我拥有的代码,它返回给我所有的id,但我只需要数组中的第二个对象。为了了解更多细节,我在图像中留下了一个示例。

JSON结构我用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;
}

我使用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>

截图中共享的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"); 

相关内容

  • 没有找到相关文章

最新更新