我有这样的请求
let jsonData= {};
jsonData["className"]= className;
jsonData["models"]= arr;
let endPoint= "/classses?classAndModel=" + encodeURIComponent(JSON.stringfy(jsonData));
return $.ajax({
url: host + endPoint,
data: data,
cache: false,
contentType: false,
processData: false,
method: "POST"
});
我想将json转换为java对象。我尝试过这个
My rest service is:
@PostMapping(value=/classes",consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Void> addClassAndModelMapping(ClassAndModels classAndModels){
}
public class ClassAndModels {
ClassAndModelResult classAndModel;
...getter and setter...
}
public ClassAndModelResult {
String className;
List<String> models;
...getter and setters...
}
我得到400错误。如果我将ClassAndModelResult classAndModel
行更改为String classAndResult
。我得到响应,但我想要对象类型。你有什么主意吗?
答案 0 :(得分:1)
代码的第一部分显示您正在将数据作为查询字符串发送。
但是考虑到@PostMapping,您应该在请求正文中发送该数据,并在服务器端执行类似的操作。
@PostMapping("/classes")
public ResponseEntity<Void> addClassAndModelMapping(@RequestBody ClassAndModels classAndModels){
//
}
如Phils所说,您可以在控制器上添加GetMapping,以查看ClassAndModels如何被序列化
来源:https://spring.io/guides/tutorials/bookmarks/
P.S。对不起我的英语,我不是母语人士。
答案 1 :(得分:0)
请尝试添加@RequestParam批注或更好地将classAndModel值用作RequestBody,类似于下面的内容,并更正javascript网址中的拼写错误。
@PostMapping(value = "/classes")
public ResponseEntity<Void> addClassAndModelMapping(@RequestBody ClassAndModels modal) {
}