我正在使用Spring来实现一个RESTful Web服务。其中一个端点接受一个JSON字符串作为请求体,我希望将其映射到一个POJO上。然而,目前似乎传入的JSON字符串没有正确地映射到POJO上。
这是@RestController接口:
@RequestMapping(value="/send", headers="Accept=application/json", method=RequestMethod.POST)
public void sendEmails(@RequestBody CustomerInfo customerInfo);
数据模型public class CustomerInfo {
private String firstname;
private String lastname;
public CustomerInfo() {
this.firstname = "first";
this.lastname = "last";
}
public CustomerInfo(String firstname, String lastname)
{
this.firstname = firstname;
this.lastname = lastname;
}
public String getFirstname(){
return firstname;
}
public void setFirstname(String firstname){
this.firstname = firstname;
}
public String getLastname(){
return lastname;
}
public void getLastname(String lastname){
this.lastname = lastname;
}
}
最后是我的POST请求:
{"CustomerInfo":{"firstname":"xyz","lastname":"XYZ"}}
使用Content-Type设置为application/json。
然而,当我打印对象值时,输出了默认值(“first”和“last”),而不是我传入的值(“xyz”和“XYZ”)。
有人知道为什么我没有得到预期的结果吗?
解决方案
事实证明,请求体的值未被传递,因为我需要在接口中以及实际的方法实现中都加上@RequestBody注释。一旦我这样做了,问题就解决了。
headers
,而是在@RequestMapping
中尝试使用consumes
属性。 - 11thdimensiongetLastname
- 如果你修复它,会发生什么变化? - mszymborski