JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
语法
JSON.stringify(value[, replacer[, space]])
参数说明:
value:
必需, 要转换的 JavaScript 值(通常为对象或数组)。
replacer:
可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
1、如果第二个参数存在,并且第二个参数是函数
let obj = { name: "guodandan", age: 12, sex: "女" };
function replacer(key, value) {
if (key === "age") {
return value + 10;
} else {
return value;
}
}
console.log(JSON.stringify(obj, replacer, 1));
console.log(obj);
最后的输出结果:
函数可以帮我们做一些操作,让我们返回指定的形式。
例如下面:我们可以过滤掉一些null或者undefined的数据
let obj = {
name: "guodandan",
age: 12,
sex: "女",
a: undefined,
b: null,
c: "",
};
function replacer(key, value) {
if (value) {
return value;
}
}
console.log(JSON.stringify(obj, replacer, 1));
console.log(obj);
返回结果:
2、如果第二个参数存在,并且是数组,第一个参数也是数组
//我试验的结果是只返回了第一个数组的值
var arr = ["a", "b", "c"];
var arr2 = [1, 2, 3, 4, 5];
console.log(JSON.stringify(arr, arr2));
3、如果第二个参数存在,是数组,并且第一个参数也存在,是正常的对象
let obj = {
name: "guodandan",
age: 12,
sex: "女",
a: undefined,
b: null,
c: "",
};
console.log(JSON.stringify(obj, ["sex", "a", "name", "b"], 1));
console.log(obj);
那么如果第二个的value在第一个存在,那么的话就以第二个的值做key,第一个值为value进行表示
4、第三个参数:如果省略的话,那么显示出来的值 就没有分隔符,直接输出来
let obj = {
name: "guodandan",
age: 12,
sex: "女",
a: undefined,
b: null,
c: "",
};
console.log(JSON.stringify(obj, ["sex", "a", "name", "b"]));
5、第三个参数:如果是一个数字的话,那么它就定义缩进几个字符,当然 如果大于10 ,则最大值为10.
6、第三个参数:如果是一些转义字符,比如“\r”,表示回车,那么它每行一个回车
7、第三个参数:如果仅仅是字符串,OK,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符。
console.log(JSON.stringify(obj, ["sex", "a", "name", "b"], 'HelloGdd'));