параметр запроса spring — ошибка вложенной проверки json

#java #spring-boot #validation

#java #spring-boot #проверка

Вопрос:

введите описание изображения здесь, у меня есть запрос, подобный этому:

 @Controller
public class Test {

    @ResponseBody
    @PostMapping("/s")
    public ResData test(@RequestBody @Valid ResData resData){
        System.out.println(resData);
        return resData;
    }
}

@Data
class ResData{

    @NotNull
    @Valid
    Message MSG;
    int code;
}

@Data
class Message {
    @NotBlank(message = "s1 cannot be blank.")
    String s1;
    String s2;
}
  

но когда я тестирую его с помощью post некоторые данные, подобные этому:

     {
  "MSG":{
    "s1":"  ",
    "s2":"ss2"
  },
  "code":"200"
}
  

он просто не может распознать:

     {
    "code": 10004,
    "msg": "参数校验失败",
    "exceptionMsg": "校验失败:MSG:must not be null, ",
    "body": null
}
  

Однако, когда я меняю «MSG» на строчный «msg», это просто сработало.
Но в моей ситуации параметр, который здесь указан, указан в верхнем регистре,
может кто-нибудь сказать мне правду?
большое вам спасибо!!

Ответ №1:

Я бы рекомендовал использовать нижний регистр для именования свойств, но вы можете использовать @JsonProperty аннотацию, чтобы сообщить Джексону, что фактическое свойство Json имеет верхний регистр

 @Data
class ResData{

    @NotNull
    @Valid
    @JsonProperty("MSG")
    Message msg;
    int code;
 }