JSON.stringify()方法将JavaScript对象或值转换为JSON字符串。作为一名JavaScript开发人员,JSON.stringify()是我最常用于调试的函数。但是它有什么作用呢,难道我们不能用console.log()来做同样的事情吗?让我们试试吧。//初始化一个用户对象constuser={"name":"PrateekSingh","age":26}console.log(user);//result//[objectObject]哦!console.log()并不能帮助我们打印出我们期望的内容。它输出[objectObject]因为从对象到字符串的默认转换是[objectObject]。因此,我们使用JSON.stringify()先将对象转换为字符串,然后在控制台中打印出来,如下所示。constuser={"name":"PrateekSingh","age":26}console.log(JSON.stringify(user));//result//"{"name":"PrateekSingh","age":26}“一般来说,开发人员使用stringify函数是很常见的,就像我们上面所做的那样。但我将告诉您一些隐藏的秘密,这些秘密将使您的开发更容易。第二个参数(数组)是的,stringify函数也可以有第二个参数。它是要在控制台中打印的对象键的数组。似乎很容易?让我们更深入一点。我们有一个对象产品,我们想知道产品名称属性的值。当我们打印出来时:console.log(JSON.stringify(product));它将输出以下结果。{"id":"0001","type":"donut","name":"Cake","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"},{"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil'sFood"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5005","type":"Sugar"},{"id":"5007","type":"PowderedSugar"},{"id":"5006","type":"ChocolatewithSprinkles"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]}很难在日志中找到name键,因为控制台显示了很多无用的信息当对象变大时,查找属性的难度增加。这是stringify函数的第二个参数派上用场的地方。让我们重写代码并查看结果。console.log(JSON.stringify(product,['name']);//result{"name":"Cake"}问题解决了,不用打印整个JSON对象,我们可以传递所有需要的键以数组的形式传递,这样只打印出需要的属性。返回undefined,键值对不会被打印,请参考例子更好理解constuser={"name":"PrateekSingh","age":26}//result{"age":26}只打印age,因为函数返回undefinedfortypeOfvalueofString第三个参数是一个数字第三个参数控制最后一个字符串的间距,如果参数是数字,stringification中的每一层这个空格字符的个数会缩进。//注意:为了便于理解,使用'--'代替空格JSON.stringify(user,null,2);//{//--"name":"PrateekSingh",//--"age":26,//--"country":"India"//}第三个参数为字符串如果第三个参数为字符串,则将被用来代替上面显示的空格字符。JSON.stringify(user,null,'**');//{//**"name":"PrateekSingh",//**"age":26,//**"country":"India"//}//这里*替换了空格字符toJSON方法我们有一个名为toJSON的方法,它可以用作任何对象的属性。JSON.stringify返回此函数的结果并将其序列化,而不是将整个对象转换为字符串。请参见下面的示例。constuser={firstName:"Prateek",lastName:"Singh",age:26,toJSON(){return{fullName:`${this.firstName}+${this.lastName}`};}}console.log(JSON.stringify(user));//result//"{"fullName":"PrateekSingh"}"在这里我们可以看到它只打印了toJSON函数的结果,而不是打印整个对象。我希望您了解了stringify()的一些基本功能。
