JavaScript中的JSON对象介绍及应用场景
在工作中咱们常常会遇到字符串和对象的解决,尤其是其中的互相转换。
其中最常见的恐怕就是明天要说的JSON对象蕴含的两个办法JSON.stringfy()以及JSON.parse()
一、JSON.stringfy()
JSON.stringify ( value [, replacer] [ , space] )
参数阐明:
-
value:
必须, 要转换的 JavaScript 值(通常为对象或数组)。
-
replacer:
可选。用于转换后果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。应用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:””。
如果 replacer 是一个数组,则仅转换该数组中具备键值的成员。成员的转换程序与键在数组中的程序一样。
-
space:
可选,文本增加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也能够应用非数字,如:\t。
示例
var data =[
{
name: "程咬金",sex:"1",age:26
},
{
name: "程才",sex:"0",age:20
}
];
var str_json = JSON.stringify(data,["name","sex"],3);
console.log(str_json);
var str_json2 = JSON.stringify(data, function (key, value) {
if (key == 'sex') {
return ["女", '男'][value];
}
console.log('value', value)
return value;
});
console.log(str_json2);
第三个个别不传,传的话相当于有了个换行操作,对应的数组示意缩进数。当然第二个参数个别也不传递。。
二、JSON.parse()
JSON.parse(text[, reviver])
返回与指定值对应的JSON字符串,能够通过额定的参数,管制仅蕴含某些属性,或者自定义办法来替换某些key对应的属性
示例
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(obj.count);
这里特地留神单双引号的应用,特地是前后端交互的时候他传过来一个两头全是单引号的字符串,你会发现这玩意居然不能用了?
JSON.parse('{"p": 5}', function (k, v) {
if(k === '') return v; // 如果到了最顶层,则间接返回属性值,
return v * 2; // 否则将属性值变为原来的 2 倍。
}); // { p: 10 }
JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
console.log(k); // 输入以后的属性名,从而得悉遍历程序是从外向外的,
// 最初一个属性名会是个空字符串。
return v; // 返回原始属性值,相当于没有传递 reviver 参数。
});
应用场景的话,回忆一下最近写的代码,前端罕用到它的中央就是往浏览器的storage中保留和取用数据。