2017-09-24 181 views
0

因此,我跟着其他一些问题,关于如何设置弹簧引导控制器来解析传入数据,这是对象数组Spring Boot通过ajax向控制器发送数组对象

我在明年的形式发送数据:

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 parse error: Can not deserialize instance of com.mypackage.controllers.RequestWrapper out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com.mypackage.controllers.RequestWrapper out of START_ARRAY token

我不知道什么尝试。

回答

0

我觉得应该是:

public @ResponseBody RequestWrapper postIt(@RequestBody Response[] req) 

鉴于你RequestWrapper POJO,正确的JSON是以下形式:

{ 
    "items": [ 
    ... 
    ] 
} 
+0

的问题是在你的答案的第二部分,现在我可以获取我的数据。谢谢 –