方法的作用:就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的)。打个比方说,你有一个类,那么你可以通过这个方法转换成相应的json类型的。
语法:JSON.stringify(value [, replacer] [, space])
参数:
value:需要系列化的对象、数组、类
replacer:可选参数;可以是方法(function),也可以是数组(array)。
space:分割符
1.如果省略的话,那么显示出来的值 就没有分隔符。直接输出来
2.如果是一个数字的话,那么它就定义缩进几个字符,当然 如果大于10 ,则最大值为10.
3.如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。
4.如果仅仅是字符串,OK,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符。
代码实例:
1.JSON.stringify(value)
var student = new Object();
student.name = "Lanny";
student.age = "25";
student.location = "China";
var json = JSON.stringify(student);
alert(student);
结果:
注:
(1).如果直接alert对象的话打印出来的是【object object】
(2).如果value是数组的话,结果也是一样的,就是把数组对象转为json的字符串形式。
2.存在第二个参数,并且第二个参数为function
var students = new Array() ;
students[0] = "Lanny";
students[1] = "dong";
students[2] = "I love you";
var json = JSON.stringify(students,switchUpper);
function switchUpper(key, value) {
return value.toString().toUpperCase();
}
alert(json);
结果:
3.存在第三个参数,第三个参数是数组
注:如果第一个参数是数组,第二个参数也是数组的话,只显示第一个参数的值
var students = new Array() ;
students[0] = "Lanny";
students[1] = "dong";
students[2] = "I love you";
var stu = new Array();
stu[0] = "1";
stu[1] = "2";
var json = JSON.stringify(students,stu);
alert(json);
var student = new Object();
student.qq = "5485891512";
student.name = "Lanny";
student.age = 25;
var stu = new Array();
stu[0] = "qq";
stu[1] = "age";
stu[2] = "Hi";//这个student对象里不存在。
var json = JSON.stringify(student,stu);
alert(student,stu)
结果:
第三个参数不做代码演示...
前端处理:前端是jqGrid,将jqGrid列表数据整体传入后端保存
function saveFun(){
debugger;
Supp.alert("专家保存按钮",Supp.alert.type.info);
var rowSet = $("#jqGrid").jqGrid('getRowData');//获取或有行数据 json数组的形式
Supp.ajax({
url:ExpertExtract.saveOrUpdate,
type:"post",
async:true,
dataType:"json",
data: {
data :JSON.stringify(rowSet)//将json数组转为String字符串
},
success:function(resp){
if(resp){
Supp.showSuccess("保存成功!");
}else{
Supp.showSuccess("保存失败!");
}
}
});
console.log(rowSet);
}
后端处理:
public OperResult saveOrUpdate(HttpServletRequest request){
String data = request.getParameter("data");
JSONArray object = JSONArray.fromObject(data);//将String转json数组
//JSONArray.toArray(object, ExpertList.class);
@SuppressWarnings({ "unchecked", "deprecation" })
List lists=(List)JSONArray.toList(object, ExpertList.class);//将json集合jArray放入list集合中,
for(ExpertList s : lists){
service.saveOrUpdate(s);
}
return OperResult.succeed(null);
}