【问题标题】:Get all records from JSON response从 JSON 响应中获取所有记录
【发布时间】:2018-05-04 20:00:26
【问题描述】:

对于 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]"

我怎样才能获得第一条记录?我宁愿不必执行字符串操作来处理“[”。

谢谢

【问题讨论】:

    标签: java rest-assured


    【解决方案1】:

    你可以这样做,

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

    这里0表示JSON数组Result中的第一条记录。

    【讨论】:

    • JSONObject 你用的是什么库?
    • 这个使用org.json。但我认为您也可以使用 Jackson 之类的东西并达到同样的效果。
    • 它是一个有效的解决方案,类似的解决方案可以使用 Gson、Jackson 等实现,但代码已经使用“rest-assured”并标记为“rest-assured”,所以我认为使用“JsonPath”哪个是rest-assured比较合适。
    • @vinay 我不同意您应该使用特定库的事实,因为您已经拥有它。如果是这种情况,那么我们不应该为ListsMaps 使用任何Guava 库,因为Java 已经有了它!等等……我认为更重要的是评估需求,然后选择图书馆。
    • 我同意我们需要评估需求并选择图书馆。我的观点是代码是使用'rest-assured' API 编写的,所以使用'rest-assured' API 回答更合适。如果我对 Guava API 有疑问,我希望使用 Guava API 而不是其他解决方案。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2015-03-20
      • 2014-10-21
      • 2022-06-28
      • 1970-01-01
      相关资源
      最近更新 更多