考虑没有引号值的 JSON 字符串在 Spring boot 中有效,Java 8

问题描述

我正在使用 javax 注释验证 json 字符串到 bean 的转换,我正在使用 javax.validation.Validator 接口,在类中,我已将一个属性标记为字符串

@NotBlank(message ="User name cannot be null")
private String userName;

我希望值用双引号括起来。喜欢 {"userName" : "my name"}。

但是,如果我将值作为 {"userName" : 1234567889} 传递,则会出现问题,验证器将其视为有效值。有没有办法限制所有这些值,或者是否有一个列表,列出所有情况下哪些被认为是坏的 Json,哪些不是。任何参考都会有所帮助。

编辑1:可能很多解释造成了混乱,让我简单地说,我希望只有在双引号中的值才能被接受,例如{“key”:“value”}违反了其他约束。

解决方法

你可以使用

@Pattern(regexp="<your regular expression>",message="<message>")

注解来自javax.validation.constraints

示例,

@Pattern(regexp="^[a-zA-Z]{4,10}",message="Invalid username")
private String userName;

以上将接受 4 到 10 个字符的用户名