所以,我跟着其他一些关于如何设置spring boot controller来解析传入数据的问题,这是对象数组。
我将以下一种形式发送数据:
var myData = [ {lang_id : 1, title : "blabla", description : "blablabla"}, {lang_id : 2, title : "der text", description : "der text"}, ... ]
$.ajax({
url: "/test2",
data: JSON.stringify(myData),
type: "POST",
dataType:"json",
contentType:'application/json'
,success : function(res){
console.log("ok!", res.data);
}
,error : function(a,b,c){
console.log("err!", a, b, c);
}
});
根据其他答案,我已经制作了我的回复和回复包装对象。
public class Response {
private Integer lang_id;
private String title;
private String description;
//getter and setters
}
public class RequestWrapper {
private List<Response> items;
//getters and setters
}
然后,我按如下方式设置我的控制器:
@PostMapping(value="/test2")
public @ResponseBody RequestWrapper postIt(@RequestBody RequestWrapper req) {
System.out.printf("\n\n%s\n\n", req);
return req;
}
任何一个答案都有这样的解决方案,但这一个对我不起作用。我收到以下错误:
org.springframework.http.converter.HttpMessageNotReadableException: JSON解析错误:无法反序列化实例 com.mypackage.controllers.RequestWrapper out of START_ARRAY token; 嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:不能 反序列化com.mypackage.controllers.RequestWrapper的实例 START_ARRAY令牌
我不知道还有什么可以尝试。
答案 0 :(得分:0)
我认为应该是:
public @ResponseBody RequestWrapper postIt(@RequestBody Response[] req)
鉴于您的RequestWrapper
POJO,正确的JSON具有以下形式:
{
"items": [
...
]
}