JSON.stringify()是JavaScript开发人员最常用于调试的函数。但是为什么要用它,console.log()不能用来做同样的事情吗?不妨试试看。//InitializeaUserobjectconstuser={"name":"PrateekSingh","age":26}console.log(user);RESULT//[objectObject]看!console.log()没有输出我们想要的结果。它输出[objectObject],因为从对象到字符串的默认转换是“[objectObject]”。因此,我们先使用JSON.stringify()将对象转换为字符串,然后将结果输入到console控制台,如下图。constuser={"name":"PrateekSingh","age":26}console.log(JSON.stringify(user));RESULT//"{"name":"PrateekSingh","age":26}"通常,开发者使用这个stringify函数的方法很简单,如上操作即可。但它隐藏的秘密(接下来会揭晓)可以让您的生活更轻松。1:第二个参数(数组)是的,stringify函数也可以有第二个参数。它是您在控制台中输入对象的一组键。看起来很简单吧?让我们仔细看看。我们有一个“Product”对象,想知道产品的名称。当我们输入: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键,因为它显示了很多ofuselessintheconsole对象越大难度越大,stringify函数的第二个参数就派上用场了,我们重写一下代码,看看结果如何。console.log(JSON.stringify(product,['name']);//RESULT{"name":"Cake"}问题解决了,我们可以只输出所需的键,而不是输出整个JSON对象,通过将其作为数组传递到第二个参数。2:第二个参数(function)也可以把第二个参数作为一个函数来传递,它根据函数中写的逻辑计算每一个键值对,如果返回未定义的键值对,则不会输出。为了更好的理解,可以参考下面的例子constuser={"name":"PrateekSingh","age":26}Passingfunctionas2ndargument//Result{"age":26}只输出age,typeOfstring的值会返回undefined因为功能条件。3:第三个参数是一个数字第三个参数控制最终字符串中的间距。如果参数是数字,则字符串化中的每一层都会缩进这个空格的字符数。注:'--'代表理解目的的间距JSON.stringify(user,null,2);//{//--"name":"PrateekSingh",//--"age":26,//--"country":"India"//}4:第三个参数为字符串如果第三个参数为字符串,则用它来代替上面显示的空格字符。JSON.stringify(user,null,'**');//{//**"name":"PrateekSingh",//**"age":26,//**"country":"India"//}此处*替换空格字符。这里*替换空格字符。5: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()中学到了一些东西。
