使用Spring验证Object的JSON结构

时间:2016-10-11 16:58:56

标签: java json spring validation

我试图将Object解析为JSON字符串并在发送之前验证JSON。使用Spring @Valid标记根据Object定义中指定的参数确保JSON有效。 但是,我发现没有检查JSON中字段的重复。是否有标签来控制字段的重复?

对象:

public class Test {

    @Size(min=2, max=30)  @NotNull
    private String name;

    @NotEmpty @Email
    private String email;

    @NotNull @Min(13) @Max(110)
    private Integer age;

    @Size(min=10)
    private String phone;

    @NotNull
    private Gender gender;
}

呼叫:

public void putTest(..., @RequestBody @Valid Test test,...) 

不幸的是,它接受以下格式的Test对象:

{Name: "Test", Email: "test@test.com", age: 20, **Gender: "M", Gender:"F"**}

1 个答案:

答案 0 :(得分:0)

如果您的JSON帖子正确,则您的字段名称有问题

请参阅:

{Name: "Test", Email: "test@test.com", age: 20, **Gender: "M", Gender:"F"**}

属性的第一个字母是大写的。

解决方案时,地图属性相同

import com.fasterxml.jackson.annotation.JsonProperty;


public class Test {

    @Size(min=2, max=30)  @NotNull
    @JsonProperty("Name")
    private String name;

    @NotEmpty @Email
    @JsonProperty("Email")
    private String email;

    @NotNull @Min(13) @Max(110)
    @JsonProperty("Age")
    private Integer age;

    @Size(min=10)
    @JsonProperty("Phone")
    private String phone;

    @NotNull
    @JsonProperty("Gender")
    private Gender gender;
}