[英]How to extract item from nested list - Rest Assured
我有這個json對象
{
"type" : "employee",
"columns" :
[
{
"id" : 1,
"human" :
[
{
"name" : "ANA",
"age" : "23"
},
{
"name" : "IULIA",
"age" : "22"
}
]
},
{
"id" : 2,
"human" :
[
{
"name" : "ADI",
"age" : "21"
},
{
"name" : "GELU",
"age" : "18"
}
]
}
]
}
我需要從每個人名單中提取名字。 我試過.body("columns.human.name[0]", everyItem(containsString("A")))
但它不起作用。 有任何想法嗎?
使用JsonPath
您可以獲得所有列和所有人類。
每個JSON Object
都表示為HashMap<>
。 如果它只包含字段,那么它是HashMap<String, String>
但是如果包含數組或嵌套的JSON對象,則它是HashMap<String, Object>
,其中Object
是另一個JSON對象或數組。
鑒於上述情況,您可以使用以下代碼獲取每列中第一個人的所有列和名稱:
JsonPath path = response.jsonPath();
List<HashMap<String, Object>> columns = path.getList("columns");
for (HashMap<String, Object> singleColumn : columns) {
List<HashMap<String, Object>> humans = (List<HashMap<String, Object>>) singleColumn.get("human");
System.out.println(humans.get(0).get("name"));
}
上面的代碼將在控制台中打印ANA
和ADI
。 您可以將結果存儲在List<String>
以進行進一步處理
你可以通過jsonPath獲取人類的所有“名字”: $.columns[*].human[*].name
它將給出以下結果:
[
"ANA",
"IULIA",
"ADI",
"GELU"
]
如果你只想要第一個“名字”,那么你需要使用josn: $.columns[*].human[0].name
這將給你以下結果:
[
"ANA",
"ADI"
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.