HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of 解決辦法

前端用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'))), 就對了
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章