She*_*riy 5 java rest spring-boot
我偶然发现了一个有趣的案例,但我不知道如何解决它。这可能与布尔字段的 JSON Post 请求默认发送 false有关,但该文章的建议没有帮助。
假设我有这门课:
public class ReqBody {
@NotNull
@Pattern(regexp = "^[0-9]{10}$")
private String phone;
//other fields
@NotNull
@JsonProperty(value = "create_anonymous_account")
private Boolean createAnonymousAccount = null;
//constructors, getters and setters
public Boolean getCreateAnonymousAccount() {
return createAnonymousAccount;
}
public void setCreateAnonymousAccount(Boolean createAnonymousAccount) {
this.createAnonymousAccount = createAnonymousAccount;
}
}
Run Code Online (Sandbox Code Playgroud)
我也有端点:
@PostMapping(value = "/test", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<MyOutput> test(
@ApiParam(value = "information", required = true) @RequestBody ReqBody input
) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
问题是当我将请求正文发送为:
{
"phone": "0000000006",
"create_anonymous_account": null
}
Run Code Online (Sandbox Code Playgroud)
或者就像
{
"phone": "0000000006"
}
Run Code Online (Sandbox Code Playgroud)
它将 createAnonymousAccount 设置为 false。
我检查过,它正确识别"create_anonymous_account": true
有没有办法在布尔字段中“强制”空值?
我真的需要知道它是否已发送,并且没有默认值。
您可以使用 Jackson 注释来忽略空字段。如果调用者没有发送 createAnonymousAccount 则它将为空。
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReqBody {
@NotNull
@Pattern(regexp = "^[0-9]{10}$")
private String phone;
//other fields
@JsonProperty(value = "create_anonymous_account")
private Boolean createAnonymousAccount ;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6142 次 |
最近记录: |