开发环境:spring-mvc4.1.7、fastjson1.2.7
问题描述:系统采用的前后端完全分离方式,前端页面使用ajax调用后台服务时,想用fastjson自动转化请求参数对象。
// 前端调用$.ajax({ url : "bas/test.do", type : "POST", async : true, contentType : "application/json; charset=utf-8", data : country,//外层定义的json对象 success : function(rst) {alert(JSON.stringify(rst)); }
// 后台服务1 @ResponseBody 2 @RequestMapping(value = "/add.do", method = { RequestMethod.POST, RequestMethod.GET }, produces = "application/json;charset=UTF-8") 3 public void add(@RequestBody Country country) { 4 // ... 5 }
运行报错堆栈,如下:严重: Servlet.service() for servlet [SpringMVC] in context with path [/mfd] threw exception [Request processing failed; nested exception is com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0] with root cause com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0 at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:232)
网上搜索各种解决方案未果,最后尝试将json对象转化成json字符串,调用成功。
修改为data : JSON.stringify(country)
上一个项目使用jackson时,data参数直接传的是json对象,fastjson不支持这种方式。。。
时间: 2024-10-14 05:56:53