我有这个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"));
}


上面的代码将在控制台中打印ANAADI
您可以将结果存储在List<String>中以进行进一步处理

09-30 17:50
查看更多