gpt4 book ai didi

java - Micronaut 嵌套 Json 输入验证

转载 作者:行者123 更新时间:2023-12-04 15:04:25 25 4
gpt4 key购买 nike

你如何验证 Json Body

{
"name": "good student",
"marks": {
"math": "122",
"english": "12"
}
}
这不起作用,它接受 JSON 正文中有或没有标记,即使 @NotNull 等被添加到 Student DTO 中的标记
@Introspected
public @Data class Student {
@NotBlank
private String name;

@Valid
@JsonProperty("marks")
private Marks marks;

@Introspected
static @Data class Marks{
@NotBlank
private String math;
@NotBlank
private String english;
}
}
用@Validated 注释的 Controller
用@Valid @Body 注释的方法参数

最佳答案

这在 Micronaut 2.0.3 版中对我有用:

@Introspected
public @Data class Student {
@NotBlank
private String name;

@Valid
@NotNull
private Marks marks;

@Introspected
static @Data class Marks{
@NotBlank
private String math;

@NotBlank
private String english;
}
}
字段 marks应注解:
  • @NotNull - 告诉 validator 它必须存在
  • @Valid - 告诉 validator 它必须验证嵌套字段

  • 示例 Controller 如下所示:
    @Validated
    @Controller("/students")
    public class StudentController {
    @Post
    public void create(@Valid @Body Student student) {
    // do something
    }
    }
    通过 curl 测试:
    curl -v -X POST http://localhost:8080/students -H 'Content-Type: application/json' -d '{"name":"John"}' | jq
    有了这个回应:
    {
    "message": "student.marks: must not be null",
    "_links": {
    "self": {
    "href": "/students",
    "templated": false
    }
    }
    }

    关于java - Micronaut 嵌套 Json 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66433629/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com