浅析JSON.stringify
# 一、JSON.stringify参数详解
stringify方法顾名思义,就是把JSON序列化,其语法如下
JSON.stringify(value [, replacer] [, space])
@前端进阶之旅: 代码已经复制到剪贴板
value:是必选字段。就是你输入的对象、如数组等replacer:这个是可选的。它又分为2种方式,一种是数组,第二种是方法【过滤函数,或者key的过滤数组(只有在数组中的会展示)】- 情况一:
replacer为数组时,通过后面的实验可以知道,它是和第一个参数value有关系的。一般来说,系列化后的结果是通过键值对来进行表示的。 所以,如果此时第二个参数的值在第一个存在,那么就以第二个参数的值做key,第一个参数的值为value进行表示,如果不存在,就忽略。 - 情况二:
replacer为方法时,那很简单,就是说把系列化后的每一个对象(记住是每一个)传进方法里面进行处理。
- 情况一:
space:就是用什么来做分隔符的【格式化前面的空格字符】- 如果省略的话,那么显示出来的值就没有分隔符,直接输出来
- 如果是一个数字的话,那么它就定义缩进几个字符,当然如果大于
10,则默认为10,因为最大值为10 - 如果是一些转义字符,比如
\t,表示回车,那么它每行一个回车。 - 如果仅仅是字符串,就在每行输出值的时候把这些字符串附加上去。当然,最大长度也是
10个字符
# 二、只传一个参数
var obj = {
name:"poetries",
age:22,
job:"FED",
location:"shenzhen of China"
};
JSON.stringify(obj) //"{"name":"poetries","age":22,"job":"FED","location":"shenzhen of China"}"
@前端进阶之旅: 代码已经复制到剪贴板
注意点
JSON.stringify对obj里面的数据类型有一些要求
- 非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中
JSON.stringify({x: 5, y: 6}) // '{"x":5,"y":6}' 或者 '{"y":6,"x":5}' 都可能
@前端进阶之旅: 代码已经复制到剪贴板
- 布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值
undefined、任意的函数以及symbol值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成null(出现在数组中时)
var obj = {
"undefined":undefined,
"null":null,
"true":true,
"func":function(