1.JSON.stringify()简介:
JSON.stringify()这个函数是用来序列化对象的,即是把对象类型转换成json类型。
它有三个参数,即JSON.stringify(value [, replacer] [, space]):
value是必填,指要转换json类型的对象(类,数组等),
replacer不是必填,用于转换结果的函数或数组,
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值,使用返回值而不是原始值,如果此函数返回 undefined,则排除成员,根对象的键是一个空字符串:"",
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。 成员的转换顺序与键在数组中的顺序一样。 当 value 参数也为数组时,将忽略 replacer 数组。
space不是必填,向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取,
如果省略 space,则将生成返回值文本,而没有任何额外空格,
如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,
如果 space 大于 10,则文本缩进 10 个空格,
如果 space 是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符,
如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符,
上面的文字描述百度上都是,下面用实例来理解JSON.stringify,以及它的三个参数:
2.只有参数value:
<script src="js/jquery-1.8.2.min.js"></script> <script type="text/javascript"> $(function () { var user = new Object(); user.name = "一叶秋"; user.address = "中国"; alert(JSON.stringify(user)); }); </script>
结果:
3.参数replacer:
3.1.replacer为数组的时候
$("#btn21").click(function () { var user = new Object(); user.name = "张三"; user.address = "北京"; var array = new Array(); array[0] = "name"; array[1] = "address"; array[2] = "tel"; alert(JSON.stringify(user, array)); });
如果第二个的value在第一个存在,那么就以第二个的值做key,第一个值为value进行表示,如果第二个的value在第一个不存在,就不显示。结果如下:
3.2.replacer为函数的时候
<script src="js/jquery-1.8.2.min.js"></script> <script type="text/javascript"> $(function () {//第二个个参数为函数 $("#btn22").click(function () { var array = new Array(); array[0] = "a"; array[1] = "b"; array[2] = "c"; alert(JSON.stringify(array, upper)); }); }); function upper(key, value) { return value.toString().toUpperCase(); }</script>
结果如下:
4.参数space:
这个参数如果省略的话,那么显示出来的值就第一个例子一样。
不省略的话:
4.1
$("#btn1").click(function(){ var user = new Object(); user.name = "一叶秋"; user.address = "中国"; alert(JSON.stringify(user,null,12)); });
结果如下:
4.2
$("#btn3").click(function () { var user = new Object(); user.name = "一叶秋"; user.address = "中国"; alert(JSON.stringify(user, null, "\t")); });
结果如下: