从JSON响应中获取所有记录

时间:2018-05-04 20:00:27

标签: java rest-assured

我仍然是Rest Assured API世界的新手。我尽可能多地阅读https://github.com/rest-assured/rest-assured/wiki/Usage#example-3---complex-parsing-and-validation上的文档。

我的回复如下:

{
  "StatusCode": 200,
  "Result": [
    {
      "EmployeeId": "5661631",
      "PhoneTypeDescription": "Home",
      "PhoneNumber": "9701234567",

    },
    {
      "EmployeeId": "5661631",
      "PhoneTypeDescription": "mobile1",
      "PhoneNumber": "2531234567",

    },
    {
      "EmployeeId": "5661631",
      "PhoneTypeDescription": "mobile2",
      "PhoneNumber": "8081234567",
    }
  ]
}

我一直在努力学习如何获得第一张唱片的电话号码。

String responseBody= 
                given()
                    .relaxedHTTPSValidation().contentType("application/json")
                    .param("api_key", api_key).
                when()
                    .get("/api/employees/" + employeeId)
                    .andReturn().asString();

    JsonPath jsonPath = new JsonPath(responseBody).setRoot("Result");
    phoneNumber = jsonPath.getString("PhoneNumber");

在这种情况下,我获得了所有电话号码: phoneNumber =" [9701234567,2531234567,8081234567]"

我怎样才能获得第一张唱片?我宁愿不必执行字符串操作来处理" ["。

由于

2 个答案:

答案 0 :(得分:2)

你可以这样做,

JSONObject json = new JSONObject(responseBody);
phoneNumber = json.getJSONArray("Result").getJSONObject(0).getString("PhoneNumber");

此处,0表示JSON数组Result中的第一条记录。

答案 1 :(得分:2)

因为您知道要检索的元素的索引,所以可以使用以下代码:

JsonPath jsonPath = new JsonPath(response);
String phoneNumber = jsonPath.getString("Result[0].PhoneNumber");