java jackson_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输入方面的最佳实践是什么?还是我已经以最新的方式进行了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值