时间:2021-05-19
当controller方法的返回值为简单类型比如String时,该如何与json交互呢?
使用@RequestBody
比如代码如下:
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8")@ResponseBodypublic String ceshijson(@RequestBody String channelId) throws IOException{ return channelId;如果代码为上面这种情况时,前台发送json时,应该这样写(写法有很多,能用就行)
function channel(){ //先获取选中的值 var channelId = $("#channelId option:selected").val(); //来判断发送的链接 if(channelId ==2){ $.ajax({ url:"ceshijson", type:"post", dataType:'json', contentType:'application/json;charset=utf-8', data:JSON.stringify({'channelId':channelId}), success:function(data){ alert(data.channelId); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } }这里需要特别注意:上篇也强调过,使用了@RequestBody时,它要求String channelId接收到数据为json字符串。也就是要是data写成这样: data:{‘channelId':channelId},就是错误的。因为这是json对象形式。
要是你不想使用JSON.stringify()这个函数,那就自己手动字符串拼接:
data:'{"channelId":'+channelId+'}'这里还要注意channelId是双引号,不能写成单引号,因为这是json语法规则。你改成单引号,也就是
**错误写法
这种形式,虽然可以传给后台,但是后台传回来的会出现undefined。也就是key必须要用双引号包围。
不使用@RequestBody
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(String channelId) throws IOException{ Map<String,Object> map = new HashMap<String,Object>(); map.put("channelId", channelId); ObjectMapper mapper = new ObjectMapper(); channelId = mapper.writeValueAsString(map); return channelId; }前台代码
$.ajax({ url:"ceshijson", type:"post", dataType:'json', //contentType:'application/json;charset=utf-8', data:"channelId="+channelId, success:function(data){ alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); }});这种方式利用ObjectMapper中的writeValueAsString将Java对象转换为json字符串。
总结:这种方式,其实是没有多大的实际意思,因为一般接收数据不是这么接收的。只做了解!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1.摘要dropna()方法,能够找到DataFrame类型数据的空值(缺失值),将空值所在的行/列删除后,将新的DataFrame作为返回值返回。2.函数详解
本文实例为大家分享了SpringMVC中controller返回json数据的2种方法,供大家参考,具体内容如下1.jsp的ajax请求:functionget
1.简介本文主要给大家介绍使用SpringMVC的后端服务如何通过配置来支持多种返回值类型(xml,json,html,excel)这里的代码使用的是sprin
C#异步方法返回void和Task的区别如果异步(async关键字)方法有返回值,返回类型为T时,返回类型必然是Task。但是如果没有返回值,异步方法的返回类型
以C语言为例,intmain和voidmain的区别是: 1、有无返回值:voidmain没有zd返回值,intmain有返回值。 2、返回值类型:intm