业务:前台ajax传递json对象形式,json对象数组形式数据,传递后台,解析json数据
开发环境:eclipse4.5+mave3.3+mysql5.7+tomcat7+jdk1.7
开发技术:springmvc+spring+mybatis+js+jquery+jsp
jar包:
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.3</version>
- </dependency>
1.前台js封装json数据案例:
- //修改模板广告数据(对象数组形式json数据)
- var modifyChannelAdverArr = [];
- //楼层广告数据
- for(var i=0;i<$("#floorsConRight_ad_box .floorAdverId").length;i++){
- if($($("#floorsConRight_ad_box .floorAdverId")[i]).html()!=""){
- var channelAdverId = $($("#floorsConRight_ad_box .floorAdverId")[i]).html();
- var adverName = $($("#floorsConRight_ad_box .floorAdverId")[i]).parent().find(".adverName").val();
- var adverPath = $($("#floorsConRight_ad_box .floorAdverId")[i]).parent().find(".adverPath").val();
- var adverHref = $($("#floorsConRight_ad_box .floorAdverId")[i]).parent().find(".imgLink").val();
- var adverSort = $($("#floorsConRight_ad_box .floorAdverId")[i]).parent().find(".floorAdverSort").val();
- modifyChannelAdverArr.push({"adverFlag":"1","floorId":channelStoreyId,"atId":"161","adverType":"151","temp3":"0","temp5":"0","channelAdverId":channelAdverId,"adverName":adverName,"adverPath":adverPath,"adverHref":adverHref,"adverSort":adverSort});
- }
- }
- //对象形式json数据
- var jsonData={"id":1,"tag":"稚优泉","productId":5534,"productName":"六色眼影"};
- var data = {} ;
- data["modifyChannelAdverArr"] = modifyChannelAdverArr;
- data["jsonData"]=jsonData;
- $.ajax({
- type: "POST",
- url: "serveTempStoreyAjax.htm",
- data: JSON.stringify(data),
- contentType : "application/json;charsetset=UTF-8",
- dataType:"json",
- cache: true,
- async: false,
- error: function (request) {
- showTipAlert("连接错误!");
- },
- success: function (data) {
- if (data == 1) {
- //serveyouLike();
- showTipAlert("操作成功!");
- $("#cancelfloorsEdit").click();
- } else {
- showTipAlert("操作失败!");
- }
- }
- });
2.后台接受参数:
- @RequestMapping("/serveTempStoreyAjax")
- @ResponseBody
- public int serveTempStoreyAjax(HttpServletRequest request, HttpServletResponse response,@RequestBody JSONObject obj) {
- int count=0;
- try {
- count=storeyService.operateTempStoreyAjax(request, obj);
- } catch (Exception e) {
- e.printStackTrace();
- LOGGER.error("操作模板楼层失败"+e.getMessage(),e);
- }
- //返回结果1成功0失败
- return count;
- }
- //测试
- public static void main(String[] args) {
- //json数据格式为对象形式:{}
- String jsonData1="{\"modifyTempStoreArr\":"
- + "{\"floorId\":\"2\",\"goodsCatId\":\"5768\",\"channelStoreyId\":\"256\",\"storeyImg\":\"http://qjnanjing.oss-cn-shanghai.aliyuncs.com/qj_nanjing/1504176460708.jpg\",\"storeyImgHref\":\"www.baidu.com\",\"storeyName\":\"精品服饰\"}"
- + "}";
- //json数据格式为对象数组形式: [{},{}]
- String jsonData2="{\"modifyChannelAdverArr\":["
- + "{\"floorId\":\"256\",\"adverHref\":\"\",\"temp3\":\"0\",\"adverType\":\"151\",\"adverFlag\":\"2\",\"adverSort\":\"1\",\"adverPath\":\"http://qjnanjing.oss-cn-shanghai.aliyuncs.com/qj_nanjing/1492671908992.jpg\",\"adverName\":\"1\",\"atId\":\"161\",\"channelAdverId\":\"2517\",\"temp5\":\"0\"},"
- + "{\"floorId\":\"256\",\"adverHref\":\"\",\"temp3\":\"0\",\"adverType\":\"151\",\"adverFlag\":\"2\",\"adverSort\":\"2\",\"adverPath\":\"http://qjnanjing.oss-cn-shanghai.aliyuncs.com/qj_nanjing/1492671908992.jpg\",\"adverName\":\"2\",\"atId\":\"161\",\"channelAdverId\":\"2518\",\"temp5\":\"0\"}"
- + "]}";
- //首先将json字符串转为为json对象
- JSONObject json1 = JSON.parseObject(jsonData1);
- JSONObject json2 = JSON.parseObject(jsonData2);
- System.out.println("json1:"+json1.toJSONString());
- System.out.println("json2:"+json2.toJSONString());
- //然后通过key名称获得值
- JSONObject object=json1.getJSONObject("modifyTempStoreArr");
- JSONArray array2=json2.getJSONArray("modifyChannelAdverArr");
- System.out.println("object:"+object.toJSONString());
- System.out.println("array2:"+array2.toJSONString());
- //解析json数据
- //方法一:
- String storeyName=object.getString("storeyName");
- Long goodsCatId=object.getLong("goodsCatId");
- String storeyImg=object.getString("storeyImg");
- String storeyImgHref=object.getString("storeyImgHref");
- Integer floorIds=object.getInteger("floorId");
- Long channelStoreyId=object.getLong("channelStoreyId");
- System.out.println("storeyName:"+storeyName);
- System.out.println("goodsCatId:"+goodsCatId);
- System.out.println("storeyImg:"+storeyImg);
- System.out.println("storeyImgHref:"+storeyImgHref);
- System.out.println("floorId:"+floorIds);
- System.out.println("channelStoreyId:"+channelStoreyId);
- for(int i=0;i<array2.size();i++){
- String adverName=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getString("adverName");
- String adverPath=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getString("adverPath");
- String adverHref=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getString("adverHref");
- Integer adverSort=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getInteger("adverSort");
- Integer adverFlag=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getInteger("adverFlag");
- Long floorId=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getLong("floorId");
- Long atId=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getLong("atId");
- Long adverType=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getLong("adverType");
- String temp3=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getString("temp3");
- String temp5=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getString("temp5");
- Long channelAdverId=JSONObject.parseObject(JSONObject.toJSONString(array2.get(i))).getLong("channelAdverId");
- System.out.println("adverName:"+adverName);
- System.out.println("adverPath:"+adverPath);
- System.out.println("adverHref:"+adverHref);
- System.out.println("adverSort:"+adverSort);
- System.out.println("adverFlag:"+adverFlag);
- System.out.println("floorId:"+floorId);
- System.out.println("atId:"+atId);
- System.out.println("adverType:"+adverType);
- System.out.println("temp3:"+temp3);
- System.out.println("temp5:"+temp5);
- System.out.println("channelAdverId:"+channelAdverId);
- }
- //方法二:
- //{ }说明它是一个对象! 用 JSON.parseObject
- ChannelStorey channelStorey=JSON.parseObject(object.toJSONString(),ChannelStorey.class);
- System.out.println("storeyName2:"+channelStorey.getStoreyName());
- System.out.println("goodsCatId2:"+channelStorey.getGoodsCatId());
- System.out.println("storeyImg2:"+channelStorey.getStoreyImg());
- System.out.println("storeyImgHref2:"+channelStorey.getStoreyImgHref());
- System.out.println("floorId2:"+channelStorey.getFloorId());
- System.out.println("channelStoreyId2:"+channelStorey.getChannelStoreyId());
- //[{},{}]说明是一个对象数组,用JSON.parseArray
- List<ChannelAdver> channelAdverList = JSON.parseArray(array2.toJSONString(),ChannelAdver.class);
- for(int i=0;i<channelAdverList.size();i++){
- System.out.println("adverName2:"+channelAdverList.get(i).getAdverName());
- System.out.println("adverPath2:"+channelAdverList.get(i).getAdverPath());
- System.out.println("adverHref2:"+channelAdverList.get(i).getAdverHref());
- System.out.println("adverSort2:"+channelAdverList.get(i).getAdverSort());
- System.out.println("adverFlag2:"+channelAdverList.get(i).getAdverFlag());
- System.out.println("floorId2:"+channelAdverList.get(i).getFloorId());
- System.out.println("atId2:"+channelAdverList.get(i).getAtId());
- System.out.println("adverType2:"+channelAdverList.get(i).getAdverType());
- System.out.println("temp3-2:"+channelAdverList.get(i).getTemp3());
- System.out.println("temp5-2:"+channelAdverList.get(i).getTemp5());
- System.out.println("channelAdverId2:"+channelAdverList.get(i).getChannelAdverId());
- }
- }
上诉测试方法里面实体对象:
ChannelStorey:
- package com.qianjiang.channel.bean;
- import java.io.Serializable;
- import java.util.Date;
- import javax.validation.constraints.NotNull;
- import javax.validation.constraints.Pattern;
- /**
- * 实体类-频道楼层
- *
- */
- public class ChannelStorey implements Serializable{
- private static final long serialVersionUID = 1094593262511040855L;
- /** 频道楼层编号 */
- private Long channelStoreyId;
- /** 频道楼层名称 */
- @NotNull
- @Pattern(regexp = "[^''\\[\\]\\<\\>?\\\\!]+")
- private String storeyName;
- /** 频道ID */
- private Long channelId;
- /** 频道模板ID */
- private Long tempId;
- /** 频道楼层层数 */
- private Integer floorId;
- /** 频道楼层图片地址 */
- @Pattern(regexp = "[^\\<\\>]+|()")
- private String storeyImg;
- /** 频道楼层图片链接地址 */
- @Pattern(regexp = "[^''\\[\\]\\<\\>?\\\\!]+|()")
- private String storeyImgHref;
- /** 频道楼层SEO */
- private String storeySeo = "";
- /** 频道楼层商品分类ID */
- private Long goodsCatId;
- /** 是否显示楼层图片 0:不显示 1:显示 */
- private String showImg;
- /** 是否显示热销排行 0:不显示 1:显示 */
- private String showHotRecommend;
- /** 是否显示楼层广告 0:不显示 1:显示 */
- private String showAdver;
- /** 是否显示楼层标签 0:不显示 1:显示 */
- private String showTag;
- /** 是否显示楼层品牌 0:不显示 1:显示 */
- private String showTrademark;
- /** 是否显示楼层布告板 0:不显示 1:显示 */
- private String showBillboard;
- /** 是否显示楼层分类的子分类 0:不显示 1:显示 */
- private String showChildCate;
- /** 是否启用 0:不启用; 1:启用 */
- private String userStatus;
- /** 是否删除 0:未删除 1:已删除 */
- private String delflag;
- /** 创建人ID */
- private Long createUserId;
- /** 创建时间 */
- private Date createDate;
- /** 修改人ID */
- private Long updateUserId;
- /** 修改时间 */
- private Date updateDate;
- /** 备用字段1 第三方ID */
- private String temp1;
- /** 备用字段2 楼层右侧导航图片 */
- @Pattern(regexp = "[^\\<\\>]+|()")
- private String temp2;
- /** 备用字段3 */
- private String temp3;
- /** 备用字段4 */
- private String temp4;
- /** 备用字段5 */
- private String temp5;
- public Long getChannelStoreyId() {
- return channelStoreyId;
- }
- public void setChannelStoreyId(Long channelStoreyId) {
- this.channelStoreyId = channelStoreyId;
- }
- public String getStoreyName() {
- return storeyName;
- }
- public void setStoreyName(String storeyName) {
- this.storeyName = storeyName;
- }
- public Long getChannelId() {
- return channelId;
- }
- public void setChannelId(Long channelId) {
- this.channelId = channelId;
- }
- public Long getTempId() {
- return tempId;
- }
- public void setTempId(Long tempId) {
- this.tempId = tempId;
- }
- public Integer getFloorId() {
- return floorId;
- }
- public void setFloorId(Integer floorId) {
- this.floorId = floorId;
- }
- public String getStoreyImg() {
- return storeyImg;
- }
- public void setStoreyImg(String storeyImg) {
- this.storeyImg = storeyImg;
- }
- public String getStoreyImgHref() {
- return storeyImgHref;
- }
- public void setStoreyImgHref(String storeyImgHref) {
- this.storeyImgHref = storeyImgHref;
- }
- public String getStoreySeo() {
- return storeySeo;
- }
- public void setStoreySeo(String storeySeo) {
- this.storeySeo = storeySeo;
- }
- public Long getGoodsCatId() {
- return goodsCatId;
- }
- public void setGoodsCatId(Long goodsCatId) {
- this.goodsCatId = goodsCatId;
- }
- public String getShowImg() {
- return showImg;
- }
- public void setShowImg(String showImg) {
- this.showImg = showImg;
- }
- public String getShowHotRecommend() {
- return showHotRecommend;
- }
- public void setShowHotRecommend(String showHotRecommend) {
- this.showHotRecommend = showHotRecommend;
- }
- public String getShowAdver() {
- return showAdver;
- }
- public void setShowAdver(String showAdver) {
- this.showAdver = showAdver;
- }
- public String getShowTag() {
- return showTag;
- }
- public void setShowTag(String showTag) {
- this.showTag = showTag;
- }
- public String getShowTrademark() {
- return showTrademark;
- }
- public void setShowTrademark(String showTrademark) {
- this.showTrademark = showTrademark;
- }
- public String getShowBillboard() {
- return showBillboard;
- }
- public void setShowBillboard(String showBillboard) {
- this.showBillboard = showBillboard;
- }
- public String getShowChildCate() {
- return showChildCate;
- }
- public void setShowChildCate(String showChildCate) {
- this.showChildCate = showChildCate;
- }
- public String getUserStatus() {
- return userStatus;
- }
- public void setUserStatus(String userStatus) {
- this.userStatus = userStatus;
- }
- public String getDelflag() {
- return delflag;
- }
- public void setDelflag(String delflag) {
- this.delflag = delflag;
- }
- public Long getCreateUserId() {
- return createUserId;
- }
- public void setCreateUserId(Long createUserId) {
- this.createUserId = createUserId;
- }
- /**
- * 时间
- * @return Date
- */
- public Date getCreateDate() {
- if (this.createDate != null) {
- return new Date(this.createDate.getTime());
- } else {
- return null;
- }
- }
- /**
- * 时间
- * @param createDate
- */
- public void setCreateDate(Date createDate) {
- if (createDate != null) {
- Date tEmp = (Date) createDate.clone();
- if (tEmp != null) {
- this.createDate = tEmp;
- }
- }
- }
- public Long getUpdateUserId() {
- return updateUserId;
- }
- public void setUpdateUserId(Long updateUserId) {
- this.updateUserId = updateUserId;
- }
- /**
- * 时间
- * @return Date
- */
- public Date getUpdateDate() {
- if (this.updateDate != null) {
- return new Date(this.updateDate.getTime());
- } else {
- return null;
- }
- }
- /**
- * 时间
- * @param updateDate
- */
- public void setUpdateDate(Date updateDate) {
- if (updateDate != null) {
- Date tEmp = (Date) updateDate.clone();
- if (tEmp != null) {
- this.updateDate = tEmp;
- }
- }
- }
- public String getTemp1() {
- return temp1;
- }
- public void setTemp1(String temp1) {
- this.temp1 = temp1;
- }
- public String getTemp2() {
- return temp2;
- }
- public void setTemp2(String temp2) {
- this.temp2 = temp2;
- }
- public String getTemp3() {
- return temp3;
- }
- public void setTemp3(String temp3) {
- this.temp3 = temp3;
- }
- public String getTemp4() {
- return temp4;
- }
- public void setTemp4(String temp4) {
- this.temp4 = temp4;
- }
- public String getTemp5() {
- return temp5;
- }
- public void setTemp5(String temp5) {
- this.temp5 = temp5;
- }
- }
ChannelAdver:
- package com.qianjiang.channel.bean;
- import java.io.Serializable;
- import java.util.Date;
- import javax.validation.constraints.NotNull;
- import javax.validation.constraints.Pattern;
- /**
- * 实体类-频道广告
- *
- */
- public class ChannelAdver implements Serializable
- {
- /**
- * 序列号
- */
- private static final long serialVersionUID = -5581190573581904835L;
- /*
- * 频道广告ID
- */
- private Long channelAdverId;
- /**
- * 频道ID
- */
- private Long channelId;
- /**
- * 模板ID
- */
- private Long tempId;
- /**
- * 楼层ID
- */
- private Long floorId;
- /** 楼层标签ID */
- private Long floorTagId;
- /** 广告标题 */
- @NotNull
- @Pattern(regexp = "[^''\\[\\]\\<\\>?\\\\!]+")
- private String adverName;
- /** 广告图片路径 */
- @Pattern(regexp = "[^\\<\\>]+|()")
- private String adverPath;
- /** 广告链接 */
- @Pattern(regexp = "[^''\\[\\]\\<\\>?\\\\!]+|()")
- private String adverHref;
- /**
- * 广告分类-关联系统字典表的广告分类 <br/>
- * 157:轮播大图片 159:轮播小图片 161:首页图片
- */
- private Long atId;
- /** 广告排序 */
- private Integer adverSort;
- /**
- * 广告类型-关联系统字典表的广告类型<br/>
- * 151:频道广告
- */
- private Long adverType;
- /** 是否启用 */
- private String userStatus;
- /** 广告描述 */
- @Pattern(regexp = "[^''\\[\\]\\<\\>?\\\\!]+|()")
- private String des;
- private String delflag;
- private Long createUserId;
- private Date createDate;
- private Long updateUserId;
- private Date updateDate;
- /** 分类导航ID */
- private String temp1;
- /** 副标题 */
- @Pattern(regexp = "[^''\\[\\]\\<\\>?\\\\!]+|()")
- private String temp2;
- /** 是否分类导航父框广告 */
- private String temp3;
- /** 第三方ID */
- private String temp4;
- private String temp5;
- /** 广告总标题 */
- private String adverTitle;
- /** 频道广告标识1普通广告2轮播广告3品牌广告 */
- private Integer adverFlag;
- public Long getChannelAdverId() {
- return channelAdverId;
- }
- public void setChannelAdverId(Long channelAdverId) {
- this.channelAdverId = channelAdverId;
- }
- public Long getChannelId() {
- return channelId;
- }
- public void setChannelId(Long channelId) {
- this.channelId = channelId;
- }
- public Long getTempId() {
- return tempId;
- }
- public void setTempId(Long tempId) {
- this.tempId = tempId;
- }
- public Long getFloorId() {
- return floorId;
- }
- public void setFloorId(Long floorId) {
- this.floorId = floorId;
- }
- public String getAdverName() {
- return adverName;
- }
- public void setAdverName(String adverName) {
- this.adverName = adverName;
- }
- public String getAdverPath() {
- return adverPath;
- }
- public void setAdverPath(String adverPath) {
- this.adverPath = adverPath;
- }
- public String getAdverHref() {
- return adverHref;
- }
- public void setAdverHref(String adverHref) {
- this.adverHref = adverHref;
- }
- public Long getAtId() {
- return atId;
- }
- public void setAtId(Long atId) {
- this.atId = atId;
- }
- public Integer getAdverSort() {
- return adverSort;
- }
- public void setAdverSort(Integer adverSort) {
- this.adverSort = adverSort;
- }
- public Long getAdverType() {
- return adverType;
- }
- public void setAdverType(Long adverType) {
- this.adverType = adverType;
- }
- public String getUserStatus() {
- return userStatus;
- }
- public void setUserStatus(String userStatus) {
- this.userStatus = userStatus;
- }
- public String getDes() {
- return des;
- }
- public void setDes(String des) {
- this.des = des;
- }
- public String getDelflag() {
- return delflag;
- }
- public void setDelflag(String delflag) {
- this.delflag = delflag;
- }
- public Long getCreateUserId() {
- return createUserId;
- }
- public void setCreateUserId(Long createUserId) {
- this.createUserId = createUserId;
- }
- /**
- * 时间
- *
- * @return Date
- */
- public Date getCreateDate() {
- if (this.createDate != null) {
- return new Date(this.createDate.getTime());
- } else {
- return null;
- }
- }
- /**
- * 时间
- */
- public void setCreateDate(Date createDate) {
- if (createDate != null) {
- Date tEmp = (Date) createDate.clone();
- if (tEmp != null) {
- this.createDate = tEmp;
- }
- }
- }
- public Long getUpdateUserId() {
- return updateUserId;
- }
- public void setUpdateUserId(Long updateUserId) {
- this.updateUserId = updateUserId;
- }
- /**
- * 时间
- *
- * @return Date
- */
- public Date getUpdateDate() {
- if (this.updateDate != null) {
- return new Date(this.updateDate.getTime());
- } else {
- return null;
- }
- }
- /**
- * 时间
- */
- public void setUpdateDate(Date updateDate) {
- if (updateDate != null) {
- Date tEmp = (Date) updateDate.clone();
- if (tEmp != null) {
- this.updateDate = tEmp;
- }
- }
- }
- public String getTemp1() {
- return temp1;
- }
- public void setTemp1(String temp1) {
- this.temp1 = temp1;
- }
- public String getTemp2() {
- return temp2;
- }
- public void setTemp2(String temp2) {
- this.temp2 = temp2;
- }
- public String getTemp3() {
- return temp3;
- }
- public void setTemp3(String temp3) {
- this.temp3 = temp3;
- }
- public String getTemp4() {
- return temp4;
- }
- public void setTemp4(String temp4) {
- this.temp4 = temp4;
- }
- public String getTemp5() {
- return temp5;
- }
- public void setTemp5(String temp5) {
- this.temp5 = temp5;
- }
- public Long getFloorTagId() {
- return floorTagId;
- }
- public void setFloorTagId(Long floorTagId) {
- this.floorTagId = floorTagId;
- }
- public String getAdverTitle() {
- return adverTitle;
- }
- public void setAdverTitle(String adverTitle) {
- this.adverTitle = adverTitle;
- }
- public Integer getAdverFlag() {
- return adverFlag;
- }
- public void setAdverFlag(Integer adverFlag) {
- this.adverFlag = adverFlag;
- }
- }
备注:
1.在日常开发中我们经常需要将json字符串转换为json对象,测试方法中给出了两种方法解析json数据,看到方法二最为简单,方便,
2.前台封装的json数据的key值名称必须跟后台实体对象的属性名称一致,否则得到的值为null