【发布时间】:2022-01-20 09:17:28
【问题描述】:
我有一段代码将 json 字符串反序列化为模型对象,但是我提供了 @NotNull 和 @NotEmpty 验证但它不起作用,下面是代码:-
private Student getDecryptedRequestData(String studentRequest) throws JsonParseException, JsonMappingException, IOException {
return new ObjectMapper().readValue(studentRequest,Student.class);
}
学生.java
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Student{
@NotEmpty
private String studentName;
@NotNull
private Long roll;
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName= studentName;
}
public Long getRoll() {
return roll;
}
public void setRoll(Long roll) {
this.duration = roll;
}
}
【问题讨论】:
-
这些用于验证,正如您所注意到的,在反序列化时不会应用。如果您让 spring 进行编组(假设您是从网络接收到的),您可以在对象被反序列化后使用
@Valid进行验证。 -
你能告诉我在哪里可以使用@Valid,这个调用不在控制器上,它直接在服务中
-
这个服务怎么称呼?有什么东西触发了这个,我假设控制器最终会这样做。如果不是,您需要手动进行验证,方法是注入验证器并调用 validate。
-
我正在解密一个 JSON 字符串,然后反序列化为一个模型对象,所以我想验证模型对象是否没有任何变量 empty/null。
-
如果您使用 spring-boot 并包含 spring-boot-configuration-processor,如果 spring 构建用于自动装配或配置的对象,则将考虑这些注释。但是jackson本身并没有使用它!
标签: java spring-boot jackson