【发布时间】:2014-03-21 18:12:58
【问题描述】:
您好,我正在使用 FireFox RestClient 发送 JSON Post 请求。
我的 JSON 请求如下:
{ "firstName": "Test", "lastName": "1", "isActive": 1 }
我的 POJO 有如下 isActive 字段
private boolean isActive;
我的控制器定义如下
@RequestMapping(method = {RequestMethod.POST,
RequestMethod.PUT}, value = "/save")
public ResponseEntity<RestResponse> save(
@RequestBody POJOUserDetails userDetails, WebRequest request){
在我的 POJO 中,当我检查 isActive 的值时,无论我发送什么都是 false。 我在我的 JSON 请求中尝试了以下值
"isActive": 1
"isActive": true
"isActive": "true"
"isActive": ""
"isActive": null
"isActive": false
以上所有都在我的控制器中发送 false。请帮忙。谢谢
添加 POJO 详细信息
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include=Inclusion.NON_EMPTY)
public class POJOUserDetails {
private String firstName;
private String lastName;
private boolean isActive;
public boolean isActive() {
return isActive;
}
public void setActive(boolean isActive) {
this.isActive = isActive;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
【问题讨论】:
-
我们可以看看你的全班,getter/setter 吗?
-
需要更多关于模型和 DAO 的信息
-
您的名字和姓氏变量设置是否正确?
-
隐约可能被名称混淆了。也许它会喜欢 setIsActive,例如。 (似乎这些 API 中的每一个都有稍微不同的命名约定。)
-
@NewQueries 我知道这是一个老问题,您已经有了解决方案。这适用于面临类似问题的其他读者。您可以在 json 中将 isActive 字段设置为必填字段,因为这将始终直接要求调用者提供真/假值,因此如果请求中缺少该字段,您将不会得到假。
标签: java json spring-mvc jackson pojo