前端用ajax通過json傳給後端,傳遞的數據是一個列表 localStorage.getItem('answers')。
[{"id":36,"ans":["pig","dog"]},{"id":37,"ans":["tiger","pig"]},{"id":38,"ans":["tiger","pig"]}]
ajax代碼:
var json = localStorage.getItem('answers')
$.ajax({
type:"POST",
url:"/finishedWork",
async:true,
contentType: 'application/json;charset=UTF-8',
data:JSON.stringify(json),
success:function(response){
if(response.code==200){
alert("提交成功!");
window.location.href = "/";
}
},
dataType:"json"
});
後端:
@ResponseBody
@RequestMapping(value="/finishedWork", method = RequestMethod.POST)
public Object finishedWork(@RequestBody List<AnswerDTO> ans, HttpSession session){
....
}
按照常規操作,只要json的Key和RequestBody的屬性名稱一致,就能自動轉換,但是卻報錯了。
通過一系列掙扎,幾個小時的測試,最後發現是犯了一個很小的錯誤。
data:JSON.stringify(json),括號裏面的type是String,但是正確的應該是一個Object
改成 data:JSON.stringify(JSON.parse(localStorage.getItem('answers'))), 就對了