繁体   English   中英

从 rest 中提取一些字段保证响应

[英]extract some field from rest assured response

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

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

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

我试图将 map 像这样

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

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

我尝试了 2 种不同的风格,但它们都不起作用。你知道吗?

学生 class:

Student class{
 private String name;
 private String surname;

 //getter and setters

}.

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

com.fasterxml.jackson.annotation.JsonIgnore

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

更新:因此,如果您想从数据元素中提取学生 object,您可以执行以下操作:

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

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

@Mapping(目标 = "id", 忽略 = true)

(文档,第 3.2 节)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM