在我的Spring Rest Endpoint中,我收到JSON作为包装在请求参数中的字符串。我可以使用JSON类的ObjectMapper将JSON字符串反序列化为Object。但是,我想验证对象的属性,即名,姓是否为空或null以及电话号码是否为10位数字以及其他验证方式
我的问题是如何在Spring Boot Rest中实现对对象的验证 在Controller方法中没有@Valid注释
@PostMapping(value = "/saveEmployee")
public ResponseEntity<?> saveEmployeeDetails(
@Valid @RequestPart(value = "empData", required = true) String emplRegJSONString,
@RequestParam("file") MultipartFile uploadFile, BindingResult result) {
Status status = new Status();
try {
LOGGER.info("Request Body is " + emplRegJSONString);
Long savedEmployeeRegisId = null;
if (StringUtils.isNotBlank(emplRegJSONString)) {
EmployeeRegistrationTbl employeeRegistrationTbl = new ObjectMapper().readValue(emplRegJSONString,
EmployeeRegistrationTbl.class);
// VALIDATION SHOULD GO AHEAD HERE ON EmployeeRegistrationTbl object
}
}
答案 0 :(得分:0)
您可以使用json-schema-validator project for spring boot on github. 让我们用一个例子来解释。我们尝试到达json对象内的一个节点,如果没有得到该节点,则将使我们的模式验证失败并捕获异常。
public void validate(final ProcessingReport report,
final MessageBundle bundle, final FullData data)
throws ProcessingException
{
final String value = data.getInstance().getNode().textValue();
try {
UUID.fromString(value);
} catch (IllegalArgumentException ignored) {
report.error(newMsg(data, bundle, "invalidUUID")
.put("input", value));
}
}
您还可以使用正则表达式获得所需的结果。示例也可用。您可以查看json-schema-validator examples on github
的示例