如何验证序列化的 JSON 字符串



在我的Spring Rest端点中,我收到JSON作为包装在请求参数中的字符串。我能够通过使用JSON类的对象映射器将JSON字符串反序列化为对象。但是,我想验证对象的属性,即名字、姓氏是空还是空,电话号码是否为 10 位数字以及其他验证等

我的问题是如何在弹簧启动休息中实现对象的验证 在控制器方法中没有@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
}
}

你可以在 github 上使用 json-schema-validator 项目进行 Spring 启动。 让我们用一个例子来解释。我们尝试访问 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));
}
}

您还可以使用正则表达式获得所需的结果。示例也可用。您可以在 github 上查看 json-schema-validator 示例

的示例

相关内容

  • 没有找到相关文章

最新更新