我有一个Spring MVC项目,我已经配置了jackson库来自动将响应(java对象)转换为json,它在GET请求中工作如下。
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody Orders createOrder(Model model){
Orders orders = new Orders();
//Populate orders.....
return orders;
}
但是当我尝试处理POST请求并从json的请求中获取对象时,我得到错误“400 Bad Request”,因为Spring无法从json创建对象Orders。我把与GET方法响应相同的json文件放在一起,所以我认为该文件格式正确。
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> createOrder(@RequestBody Orders orders){
LOG.info(orders.toString());
return new ResponseEntity<String>("", HttpStatus.CREATED);
}
如果我将@RequestBody类更改为String(createOrder(@RequestBody String orders)),则会很好地处理POST请求。
我是否必须创建一个映射器,将输入json映射到类Order?
更新: 我创建了一个最简单的例子来尝试它,我收到错误400.例如:
域名:Home.java
public class Home {
private String address = "Calle mármoles";
public Home(){
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
控制器:
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> createOrder2(@RequestBody Home orders){
return new ResponseEntity<String>("{}", HttpStatus.CREATED);
}
JSON(POST):
{
address: "Prueba"
}
[解决]
我错过了将“”放在参数名称的名称中。
答案 0 :(得分:0)
[解决]
我错过了将“”放在参数名称的名称中。
此外,该类必须有一个默认的空白构造函数,以便让jackson库创建对象。