我有这个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")))
,但是没有用。有什么想法吗?
答案 0 :(得分:0)
使用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>
中以进行进一步处理
答案 1 :(得分:0)
您可以使用jsonPath从人类获得所有“名称”:$.columns[*].human[*].name
,它将得到以下结果:
[
"ANA",
"IULIA",
"ADI",
"GELU"
]
如果只需要第一个“名称”,则需要使用josn:$.columns[*].human[0].name
,这将为您带来以下结果:
[
"ANA",
"ADI"
]