【问题标题】:extract some field from rest assured response从放心的响应中提取一些字段
【发布时间】:2021-05-03 19:49:05
【问题描述】:

我有一个 ResponseBody 对象,它是这样的:

"data": {
    "id": 123,
    "name": "georghe",
    "surname": "sue"
 } 

我可以忽略 id 字段,因为我想将它与我的 json 数据进行比较,并且它不包含 id 字段。 我得到了response.getBody().path("data").toString() 这样的数据,但 id 也来了。

我试图像那样映射到我的 java 类

response.getBody().path("data").as(Student.java)

但我不能使用带路径的方法。(在我的学生类中,我在 id 上方使用@jsonIgnore 注释)

我尝试了 2 种不同的风格,但它们都不起作用。你有什么想法吗?

学生班:

Student class{
 private String name;
 private String surname;

 //getter and setters

}.

【问题讨论】:

  • 我在这里很困惑 - 标题说“提取一些字段”,但在描述中你说的是忽略一个字段......另外,你又想与什么比较?
  • 其实我不想看到响应中的 id 字段。

标签: java rest-assured


【解决方案1】:

您可以使用具有以下组合的 Mapstruct (https://mapstruct.org/):

@Mapping(target = "id", ignore = true)

(文档,第 3.2 节)。

【讨论】:

    【解决方案2】:

    因此,如果您想忽略/避免在响应中包含 Id,@JsonIgnore 是正确的方法,但请确保您使用了正确的注释:

    com.fasterxml.jackson.annotation.JsonIgnore
    

    前段时间我也遇到过同样的情况,这是由于从错误的库(net.minidev.json.annotate)导入注释引起的

    更新:所以如果你想从数据元素中提取学生对象,你可以这样做:

    final Student student = given()
        .header(YOUR_HEADER, YOUR_HEADER_VALUE)
    .when()
        .get(YOUR_URL)
    .then()
        .statusCode(200)
        .extract().jsonPath().getObject("data", Student.class)
    

    【讨论】:

    • 我可以使用@JsonIgnore,但我如何映射json数据。我使用response.getBody().path("data").as(Student.java),但无法正常工作,因为我不能作为路径方法的方法。我添加我的学生对象
    • @hagi10 看到我上面的更新,希望它对你有用
    猜你喜欢
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多