共计 1061 个字符,预计需要花费 3 分钟才能阅读完成。
前端对象转字符串能够应用 JSON.stringify,其中 stringify 除了传入 obj,还能够额定的传入两个参数。
第一个参数
var data = {name:"niuzai",info:{age:18,sex:"male"}};
JSON.stringify(data); //{"name":"niuzai","info":{"age":18,"sex":"male"}}
应用 JSON.stringify 的时候有两点须要留神,第一点是不能保障程序,第二点是函数不会被序列化
第二个参数
第二个参数能够是回调函数 replacer 或者数组
回调函数
var data = {
name:"niuzai",
info:{
age:18,
sex:"male"
}
};
JSON.stringify(data, function(key, val){console.log("key is %s", key);
console.log("val is %s", typeof(val));
return val;
});
//key is
//val is object
//key is name
//val is string
//key is info
//val is object
//key is age
//val is number
//key is sex
//val is string
"{"name":"niuzai","info":{"age":18,"sex":"male"}}"
tips:如果对象中含有 Set、Map 之类的数据,序列化后会变成 {},咱们能够在 replacer 回调函数中将其转换,不可转换的状况请参考 MDN
数组
在数组中的字段才会被序列化
JSON.stringify(data, ["name", "info", "sex"]);
// age 因为不在列表里,所以没被序列化
// "{"name":"niuzai","info":{"sex":"male"}}"
第三个参数
第三个参数能够用来格式化转换之后的成果,比方想格式化之后想放弃原来的缩进,那么能够加个数字 2 或者 4,最多 10 个,也能够跟字符串 (蕴含制表符或者换行符之类)
JSON.stringify(data,null,10);
// 每一个层级比上一个多 10 个空格
"{"name":"niuzai","info": {"age": 18,"sex":"male"}
}"JSON.stringify(data,null,'\t');
// 每一个层级比上一个多一个制表符
"{"name":"niuzai","info": {"age": 18,"sex":"male"}
}"
正文完
发表至: javascript
2020-09-02