我正在使用Spring来实现RESTful Web服务 . 其中一个 endpoints 将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”)
有谁知道为什么我没有得到我预期的结果?
FIX
事实证明,请求体的值没有传入,因为我不仅需要在我的界面中使用@RequestBody注释,而且还需要实际的方法实现 . 有了这个,问题就解决了 .
5 回答
事实证明,请求体的值没有传入,因为我不仅需要在我的界面中使用@RequestBody注释,而且还需要实际的方法实现 . 有了这个,问题就解决了 .
你可以通过多种方式实现这一目标,我将以不同的方式实现这一目标 -
NOTE:
请求数据为{"customerInfo":{"firstname":"xyz","lastname":"XYZ"}}1st way
我们可以将以上数据绑定到 Map 上,如下所示2nd way
我们可以将它直接绑定到pojostep 1
创建dto类UserInfo.java
step 1.
创建另一个dto类CustomerInfo.java
step 3
将请求正文数据绑定到pojo我希望它会帮助你 . 谢谢
格式化很糟糕,但这应该适用于jackson配置 .
另外,如评论中所述,您的JSON对您的对象是错误的 .
看起来确实是您对象的正确JSON .
样本数据 :
对于以上数据,这个pring控制器方法为我工作:
从默认构造函数中删除这两个语句并尝试