springMVC绑定json参数之二(2.1)
二、springmvc 接收不同格式的json字符串
1.首先扫盲几个知识点:
这个绑定json参数讲的都是用@RequestBody标签,所以前台必须传json字符串,不能是json对象,但是如果不用@RequestBody标签,前台是可以发送json对象的,而springmvc不能简单将复杂json对象在后台作为一个对象绑定(前台要用表单的形式构造json复杂对象,后台才能正常绑定,不用@RequestBody标签就是傻瓜式绑定,只要变量名一样,就绑定,包括对象里的和方法中单独的变量参数),例子如下:
前台发送:
1 test = function () { 2 3 jQuery.ajax({ 4 url : cur_url+"/weekly/test", 5 type : 'post', 6 data : {"jsonObjName":"123","id":456}, 7 dataType : 'json', 8 success : function (data, textStatus) { 9 console.info(data); 10 console.info(data.length); 11 for ( var i = 0; i < data.length; i++) { 12 console.info(i + ":" + data[i].address); 13 console.info(i + ":" + data[i].userName); 14 } 15 alert("test success!"); 16 }, 17 error:function(){ 18 alert("test error!"); 19 } 20 }); 21 };
后台接收:
1 @RequestMapping("/test") 2 @ResponseBody 3 public List<User> test(String jsonObjName, Integer id) { 4 List<User> uList = new ArrayList<User>(); 5 User u = new User(); 6 u.setUserName(jsonObjName); 7 uList.add(u); 8 return uList; 9 10 }
这里没有用到@RequestBody标签,ajax请求的时候不能指定contentType:"application/json",指定 dataType : 'json'的目的是后台返回json类型,这里spingmvc返回的是List<User>的json字符串。
这里发送的是json对象,后台接收json对象中的key对应的value,后台变量名必须和前台json对象中的key一致,由于spring绑定参数时是傻瓜式绑定,只要遇到变量名和前台json对象中key一样的就绑定,所以控制器参数中有一个对象,对象中有变量类型是String,变量名是jsonObjName 也会进行绑定,这里不做验证。
需要注意的是:不用@RequestBody标签,前台只能传递json对象,不能传递json字符串,这里json对象类似于表单提交绑定参数的方式,参考:http://www.cnblogs.com/cainiao-Shun666/p/6557624.html
例子见下一节。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧