首页 > 开发 > Java > 正文

详解springMVC之与json数据交互方法

2024-07-13 10:07:37
字体:
来源:转载
供稿:网友

前台代码:

function channel(){     //先获取选中的值     var channelId = $("#channelId option:selected").val();     //来判断发送的链接     if(channelId ==2){     **需要注意地方 start**     var schoolBannerInfo = {      "img": channelId,      "title": channelId,      "info": channelId,      "channelId": channelId     };     **需要注意地方 end**      $.ajax({         url:"ceshijson",         type:"post",         dataType:'json',         **需要注意地方 start**         contentType:'application/json;charset=utf-8',         data:JSON.stringify(schoolBannerInfo),         **需要注意地方 end**         success:function(data){            alert(data);         },         error:function(XMLHttpRequest, textStatus, errorThrown){           alert("Error")           alert(XMLHttpRequest.status);           alert(XMLHttpRequest.readyState);           alert(textStatus);           }      });     }   }

加粗的部分是要注意的地方。

其中contentType:'application/json;charset=utf-8'不能省掉,否则会报415错误。

毕竟我发送的是json字符串,得告诉服务器,来的数据是json数据。

JSON.stringify()是将JavaScript对象转换为json字符串

JSON.parse(jsonstr)是将json字符串转换为JavaScript对象

补充知识:json其实就是JavaScript的子集。

参考地址:http://www.vevb.com/article/35090.htm

后台代码:

pojo类:

public class SchoolBannerInfo {  private Integer id;  private Date createTime;  private String img;  private String title;  private String info;  private Integer seq;  private Integer schoolId;  private String type;  private boolean enable;  private String link;  private String channelId;}

get与set方法自己生成,这个就不贴出来了。

controller中方法:

@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8")@ResponseBodypublic SchoolBannerInfo ceshijson(@RequestBody SchoolBannerInfo schoolBannerInfo) throws IOException{//   Map<String,Object> map = new HashMap<String,Object>();//    map.put("channelId", channelId);//    ObjectMapper mapper = new ObjectMapper();//    channelId = mapper.writeValueAsString(map);    return schoolBannerInfo;  }

注意:

1、@RequestBody不能省,因为前台发过来的数据是json数据,得用这个注解去解析该怎么接收这些数据给pojo类的对象。

2、因为我也要返回json数据。所以需要这个注解@ResponseBody,把Java对象转换成json字符串

3、当使用@RequestBody时,要求前台传过来的数据是json字符串。如果是json对象是会出错的。所以如果你前台data部分这么写:data:{“channelId”:2},这样是不行的。因为{“channelId”:2}是json对象,你需要再在外层加个引号'{“channelId”:2}'这样才行。

4、要是方法返回值为简单类型比如:String时,该如何处理呢!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表