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中保留和取用数据。