-
Notifications
You must be signed in to change notification settings - Fork 5
Description
JSON.stringify() 方法用于将一个json值转为字符串;
JSON.parse() 方法用于将json字符串转化成对象;
当我们用JSON.stringify()方法将json值转为字符串时,你会发现所有字符串都连在一块,根本看不懂。
那么就有下面的解决方法了:
JSON.stringify(json,null,"\t"); //缩进一个tab
JSON.stringify(json,null,5); //缩进5个空格有时候你会发现,如果打印这些字符串,他们还是连在一块的,这是因为html忽略了你的空格或者tab,那么就用<pre></pre>标签吧,它可以定义预格式化的文本。被包围在pre元素中的文本通常会保留空格和换行符。
JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
语法
JSON.stringify(value[, replacer[, space]])
参数说明:
-
value:必需, 要转换的
JavaScript值(通常为对象或数组)。 -
replacer:
可选。用于转换结果的函数或数组。
如果replacer为函数,则JSON.stringify将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回undefined,则排除成员。根对象的键是一个空字符串:""。
如果replacer是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当value参数也为数组时,将忽略replacer数组。 -
space:
可选,文本添加缩进、空格和换行符,如果space是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果space大于 10,则文本缩进 10 个空格。space也可以使用非数字,如:\t。
返回值:
- 返回包含 JSON 文本的字符串。
按照 JSON 的规范,使用 JSON.stringify() 做对象序列化时,如果一个属性为函数,那这个属性就会被忽略。还有一种情况,一个属性的值为 undefined 也会被忽略。但是,属性值为 null 则可以正常序列化这个属性,因为 null 可表示已经赋值,而 undefined 表示未定义、未赋值,所以执行 JSON.stringify 不会处理。
- stringify 输出
Function
const replacer = function(k ,v) {
if(typeof v === 'function') {
return Function.prototype.toString.call(v)
}
return v
}- stringify 输出
undefined
const replacer = function(k ,v) {
if(v === undefined){
return 'undefined'
}
return v
}- 综合起来就是
const replacer = function(k ,v) {
if(typeof v === 'function') {
return Function.prototype.toString.call(v)
}
if(v === undefined){
return 'undefined'
}
return v
}