前言在开发工作中,我们可能会遇到这样一个需求:我们需要在弹窗中显示或保存一个对象的内容。这时候如果直接弹出窗口,很可能是这样的:因为很多接口对参数都有要求,比如只能是字符串之类的。这时候我们就需要把对象转成字符串输出,而JSON.stringify()方法可以帮助我们实现对象转成字符串的过程。方法描述JSON.stringify()方法将JavaScript对象或值转换为JSON字符串。如果指定了replacer函数,则可以选择性地替换值,或者如果指定的replacer是一个数组,则只有数组可以选择性地包含指定的属性。语法JSON.stringify(value[,replacer[,space]])参数说明:将value序列化为一个JSON字符串值。replacer(optional)如果参数是函数,序列化后的值的各个属性在序列化过程中都会被函数转换处理;如果参数是一个数组,只有包含在这个数组中的对象中的属性名才会被序列化为最终的JSON字符串;如果参数为null或未提供,则对象的所有属性都将被序列化。space(optional)指定缩进的空字符串,用于美化输出(pretty-print);如果参数是数字,则表示有多少个空格;上限为10。如果省略空格,则生成的返回值文本将不带任何额外的空格。如果space是一个数字,则返回值文本在每个级别缩进指定数量的空格。如果空格大于10,则文本缩进10个空格。如果空格是非空字符串(例如“\t”),则返回值文本按字符串中的字符在每一级缩进。如果空格是长度超过10个字符的字符串,则使用前10个字符。返回值表示给定值的JSON字符串。一般用法console.log(JSON.stringify({name:"obj"}))//'{"name":"obj"}'replacer参数replacer参数可以是函数也可以是数组。作为一个函数,它有两个参数,key(键)和value(值),这两个参数都会被序列化。开始时,replacer函数会传入一个空字符串作为键值,代表要字符串化的对象。然后依次传入每个对象或数组的属性。该函数应该返回JSON字符串中的值,如下:如果返回一个Number,它会被转换成对应的字符串作为属性值添加到JSON字符串中。如果返回一个字符串,该字符串将作为属性值添加到JSON字符串中。如果返回布尔值,则将“true”或“false”作为属性值添加到JSON字符串。如果返回任何其他对象,该对象将递归序列化为JSON字符串,为每个属性调用replacer方法。除非对象是函数,否则不会被序列化为JSON字符串。如果返回undefined,则该属性值不会输出到JSON字符串中。有以下对象:constdata=[{name:"person1",sex:0,age:18,isStudent:true},{name:"person2",sex:1,age:25,isStudent:false},{name:"person3",sex:0,age:15,isStudent:true}]接下来,我们实现这个对象的各种需求。只输出姓名和性别constres=JSON.stringify(data,["name","sex"])console.log(res);//`[{"name":"person1","sex":0},{"name":"person2","sex":1},{"name":"person3","sex":0}]`JSON.stringify()提供需要分离的部分数据.性别转汉字constres=JSON.stringify(data,(key,value)=>{if(key=='sex'){return["female",'male'][value];}returnvalue;})console.log(res);//`[{"name":"person1","sex":"female","age":18,"isStudent":true},{"name":"person2","sex":"male","age":25,"isStudent":false},{"name":"person3","sex":"female","age":15,"isStudent":true}]`JSON.stringify()提供回调函数来建立映射关系。空格参数constres=JSON.stringify(data,["name","sex"],4)console.log(res);输出如下:此处使用4个空格作为缩进级别。注意:使用“\t”的结果看起来和使用4个空格的结果很相似,但并不是一回事。总结JSON.stringify()方法可以通过参数控制输出的数据和格式,灵活运用将大大提高我们的工作效率。学习有趣的知识,认识有趣的朋友,塑造有趣的灵魂!我是〖编程三昧〗的作者汪山人,我的公众号是《编程三昧》,欢迎关注,希望大家多多指教!你来,怀揣期待,我以墨香迎接你!您归来,不分得失,只送回味!知识与技能并重,内功与外功并重,理论与实践两手抓,两手都要用力!
