1、问题描述
我在前端页面用ajax传json数组时碰到了这个Bug
2、前端页面:
var wellInfos=[];
for (var i=0;i<selects.length;i++){
wellInfos.push({
"wellId":selects[i].wellId,
"area":selects[i].area,
"wellType":selects[i].wellType,
"abandonWell":selects[i].abandonWell,
// "oilDailies":selects[i].oilDailies,
// "waterDailies":selects[i].waterDailies
});
}
console.log(wellInfos);
console.log(JSON.stringify(wellInfos));
$.ajax({
url:'/opms/wellInfo/deleteWellInfo',
type:'post',
async:'true',
cache:false,
contentType:"application/json;charset=UTF-8",
data:{
wellInfos:JSON.stringify(wellInfos)
},
dataType:'json',
success:function (data) {
if (data.success=='true'){
$('#table').bootstrapTable('refresh');
swal('系统提示',data.message,'success');
}else{
swal('系统提示',data.message,'error');
}
},
error:function (aa,ee,rr) {
swal({
title:'系统提示',
text:'请求服务器失败,请稍后重试!',
type:'warning'
})
}
});
}else{
swal('系统提示','您取消了删除操作','error');
}
})
3、控制台打印的
4、后端controller
//删除单井
@RequestMapping(value = "/deleteWellInfo",produces ="text/html;charset=UTF-8",method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public String deleteWellInfo(@RequestBody List<WellInfo> wellInfos){
for (WellInfo wellInfo:wellInfos){
System.out.println(wellInfo);
}
// System.out.println(wellInfos);
return null;
}
你那个发送到后台的时候不需要做特别处理了
直接发送对象就可以了
不用
报错是这个:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $
public class WellInfo { //单井信息
private String wellId; //井编号
// private String areaId; //作业区编号(外键)
private Area area;
private String wellType; //井类型:1油井、2注水井、3注气井
private String abandonWell; //是否报废/停产
private List<OilDaily> oilDailies;
private List<WaterDaily> waterDailies;
这是实体类
解决了,把那个data参数得大括号去掉就行了