Java 8 Jackson验证

我有一个springboot休息服务。用户传入一个json对象,该对象反序列化到此java pojo中:

public final class Request {

private String id;

private double code;

private String name;

public String getId() {

return id;

}

public double getCode() {

return code;

}

public String getName() {

return name;

}

}

因此,用户需要传递以下json:

{

"id": “123457896”,

"code": "Foo",

"name": "test"

}

我想将所有这些字段都设为必填项。提供更少或更多的东西将引发异常。反序列化时,有没有办法告诉杰克逊验证输入?我已经尝试过了,@JsonProperty(required=true)但这是行不通的。显然,从这里到这里似乎JsonProperty都没有遵守注释。

我在控制器中调用了这个验证器:

@Component

public class RequestValidator implements Validator {

@Override

public boolean supports(Class<?> clazz) {

return false;

}

@Override

public void validate(Object target, Errors errors) {

String id = ((Request) target).getId();

if(id == null || id.isEmpty()) {

throw new InvalidRequestException("A valid id is missing. Please provide a non-empty or non-null id.");

}

}

}

但这在每个领域都显得乏味且丑陋。因此,鉴于我正在使用Java 8,Spring

Boot和最新版本的Jackson,在验证传入的json输入方面的最佳实践是什么?还是我已经以最新的方式进行了?

回答:

您使用了Spring Validator方法。还有另一种方法:

J2EE JSR-303 / JSR-349 Bean验证API。它提供验证注释(javax,而不是jackson)。

在这里看到两个很好的例子

以上是 Java 8 Jackson验证 的全部内容, 来源链接: utcz.com/qa/414455.html

回到顶部