JSON的方法-stringify()

来源:互联网 发布:微云同步盘for mac 编辑:程序博客网 时间:2024/06/01 08:05
1 JSON.stringify
作用:把对象系列化成json字符串。 
语法:
JSON.stringify(value [, replacer] [, space])
value:是必须要的字段。就是你输入的对象,比如数组啊,类啊等等。
replacer:可选,它又分为2种方式,第一种是方法,第二种是数组。
space:用什么来做分隔符的。
1.如果省略的话,那么显示出来的值 就没有分隔符。直接输出来
2.如果是一个数字,那么就缩进几个字符,最大值为10.
3.如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。
4.如果仅仅是字符串,OK,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符。

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);

上面的方法也可以换成下面的,2个都是一样,只是写法有那么一点点的不一样而已。

   //var json = JSON.stringify(students, function (key,value) {

   //return value.toString().toUpperCase();

   //});


3.第二个参数存在,并且第二个参数不是function,而是数组的时候。
结论: 第二个被忽略了,只是第一个被系列化了。

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);


3.2 如果第一个是对象,第二个是数组的。

结论: 只有数组的value==object的key,才会系列化显示出来

代码如下:
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(json);

得到的结果如下: 因为stu[2] = "Hi";这个Hi 在第一个找不到,所以就不进行显示了。



0 0