【问题标题】:How to convert JSON response to Java List- Using Rest Assured for API Testing如何将 JSON 响应转换为 Java 列表 - 使用 Rest Assured 进行 API 测试
【发布时间】:2017-12-15 16:28:25
【问题描述】:

我有一个嵌套的 JSON 响应。 JsonResponse Screenshot

我想从列表中的第 0 个位置获取字典,然后从中获取特定元素。 例如作为回应,{0} 和 {1},我希望得到完整的 {0}。然后从 {0},我只想提取“Id”值。
我不想每次都使用 JsonPath.read(JsonResponse String, JSON Path) 。所以寻找一些简单更好的替代方案。

如何将 JSON 响应转换为 Java 列表。以下是回复。

Response resp = given().header("Authorization", "Bearer "+"dwded").
                accept(ContentType.JSON).
                when().
                get("https://example.com");      
                return resp;

【问题讨论】:

  • 我会在 editor.swagger.io 中编写它,然后让编辑器为您生成 java 代码。
  • 如果您有一个代表您的响应的 Java 类,您可以使用 Response#readEntity 然后像访问任何其他 Java 对象一样访问它
  • @Matthew Clark 如何做到这一点。对不起,我没有得到它。我正在使用放心。这里可以用吗?

标签: java json automation rest-assured rest-assured-jsonpath


【解决方案1】:

对于测试 web-API 或 REST 端点,我推荐Karate

这样就变得简单了:

* def id = response[0].Id

【讨论】:

  • 感谢您向我介绍新世界。我不知道空手道。我现在也很兴奋使用它。
  • @DBhatnagar 太好了,一定要宣传。只是好奇你为什么接受另一个答案。至少投票:P
【解决方案2】:

在 swagger 编辑器宠物示例中。

  responses:
    200:
      description: "successful operation"
      schema:
        type: "array"
        items:
          $ref: "#/definitions/Pet"

一个模型是从生成的

  Pet:
    type: "object"
    properties:
      name:
        type: "string"
        example: "doggie"

这生成了一个java类

public class Pet   {

  @JsonProperty("name")
  private String name = null;

该 api 显示了一个 REST,它返回一个可以显示为 json 对象数组的实体

    ResponseEntity<List<Pet>> findPetsByStatus( @NotNull@ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @RequestParam(value = "status", required = true) List<String> status);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2019-06-13
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多