我在执行测试脚本时得到UnrecognizedPropertyException
。我正在使用intellij-idea,org.projectlombok:lombok:1.18.26
,com.fasterxml.jackson.core:jackson-databind:2.14.2
和io.rest-assured:rest-assured:5.3.0
库与java 17。
在pojo类中,如果我将类字段设置为公共字段,那么它就可以工作。但是如果我将访问说明符更改为private,则会出现以下错误。com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "page" (class com.SampleGradle.pojo.responsePojo.User), not marked as ignorable (5 known properties: "per_page", "data", "total", "support", "total_pages"])
。
但是,相同的代码在Eclipse中使用相同的配置。
用户类
@Data
public class User {
private int page;
private int per_page;
private int total;
private int total_pages;
private List<Datum> data;
private Support support;
}
gradle构建文件
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
testImplementation 'junit:junit:4.13.1'
implementation 'io.rest-assured:rest-assured:5.3.0'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.2'
testImplementation 'org.assertj:assertj-core:3.24.2'
compileOnly 'org.projectlombok:lombok:1.18.26'
}
请求文件
public Response getUsersList(String endPoint)
{
return RestAssured.given()
.contentType("application/json")
.get(endPoint)
.andReturn();
}
1条答案
按热度按时间u4dcyp6a1#
UnrecognizedPropertyException在您尝试将JSON响应反序列化为Java对象时发生,但JSON包含相应Java类中不存在的属性。
在您的示例中,该异常可能是由包含User类中不存在的其他属性的JSON响应引起的。要解决此问题,可以在User类上使用@JsonIgnoreProperties(ignoreUnknown = true)注解。这个注解告诉Jackson忽略JSON中任何无法识别的属性。
下面是带有@JsonIgnoreProperties注解的User类的更新版本:
通过添加@JsonIgnoreProperties(ignoreUnknown = true),Jackson将在反序列化期间忽略任何未知属性,并防止抛出UnrecognizedPropertyException。
确保在代码中导入com.fasterxml.Jackson.annotation.JsonIgnoreProperties。
此外,确保您尝试反序列化的JSON响应与User类中定义的结构匹配。如果想要捕获JSON中的其他属性,可以将它们作为字段添加到User类中。
我希望这能为你解决这个问题。如果您还有其他问题,请告诉我!