使用 Java 模型类验证响应 Json

Validate Response Json with Java Model Class

提问人:Kalhara 提问时间:8/30/2023 最后编辑:Kalhara 更新时间:8/30/2023 访问量:35

问:

我正在开发一个 Spring Boot 应用程序。我使用了一个 Restful API,并得到了一个 json 响应,我对其进行了反序列化。

问题是 API 使用不正确的字段进行响应,并且一些不应为 null 的值作为 null 值发送。因此,当我使用方法验证反序列化对象时,它会引发错误。最糟糕的是,它没有提到 json 中的错误字段是什么。API 响应应该是固定的,但我想知道 json 在哪里不遵守模型类。org.springframework.validation.Validator.validate

我怎样才能验证 json 并知道哪些字段违反了 json 中的 null、不正确的属性名称等约束?提前致谢。

public void validate(Object object) {
    BeanPropertyBindingResult result = new BeanPropertyBindingResult(object,
            object.getClass().getSimpleName());
    validator.validate(object, result);
    if (!result.hasErrors()) {
        return;
    }
    List<String> errorMessages = new ArrayList<>();
    for (FieldError fieldError : result.getFieldErrors()) {
        String field = fieldError.getField();
        String message = fieldError.getDefaultMessage();
        errorMessages.add("Field: " + field + ", Error: " + message);
    }
    String errorMsg = errorMessages.stream().collect(Collectors.joining("\n"));
    if (enabledThrowException) {
        throw new IllegalStateException("Incorrectly Declared Fields:\n" + errorMsg);
    }
    log.error(errorMsg);
}

这是一个相当大的模型类的一部分,模型类无法更改以适应 API 响应 Json。

@Data
public class Student {
    @NotNull
    @Schema(description = "Student name.")
    private String name;
    @Nullable
    @Schema(description = "University url.")
    private String url;
    @Nullable
    @Schema(description = "Description")
    private String Description;
}
Java JSON Spring-Boot 验证

评论


答: 暂无答案