如何把=符号参数转换成:号的json参数_JSON.stringify()
玩出新花样,太腻害了
点击上⽅“程序员⿊叔”,选择“置顶或者星标”
你的关注意义重⼤!
译者 / zoomdong
阅读本⽂需要 3分钟
前⾔
JSON.stringify() ⽅法能将⼀个 JavaScript 对象或值转换成⼀个 JSON 字符串。
作为⼀名 JavaScript 开发⼈员,JSON.stringify() 是⽤于调试的最常见函数。但是它的作⽤是什么呢,难道我们不能使⽤ console.log() 来
做同样的事情吗?让我们试⼀试。
/
/初始化⼀个 user 对象const user = { "name" : "Prateek Singh", "age" : 26}console.log(user);// 结果// [object Object]
哦!console.log() 没有帮助我们打印出期望的结果。它输出 **[object Object]**,因为从对象到字符串的默认转换是 [object Object]。因此,
我们使⽤ JSON.stringify() ⾸先将对象转换成字符串,然后在控制台中打印,如下所⽰。
const user = { "name" : "Prateek Singh", "age" : 26}console.log(JSON.stringify(user));// 结果// "{ "name" : "Prateek Singh", "age" : 26 }"
⼀般来说,开发⼈员使⽤ stringify 函数的场景较为普遍,就像我们在上⾯做的那样。但我要告诉你⼀些隐藏的秘密,这些⼩秘密会让你开发
起来更加轻松。
第⼆个参数(数组)
是的,stringify 函数也可以有第⼆个参数。它是要在控制台中打印的对象的键数组。看起来很简单?让我们更深⼊⼀点。我们有⼀个对象
product 并且我们想知道 product 的 name 属性值。当我们将其打印出来: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
在⽇志中很难到 name 键,因为控制台上显⽰了很多没⽤的信息。当对象变⼤时,查属性的难度增加。stringify 函数的第⼆个参数这
时就有⽤了。让我们重写代码并查看结果。
console.log(JSON.stringify(product,['name' ]);// 结果{"name" : "Cake"}
问题解决了,与打印整个 JSON 对象不同,我们可以在第⼆个参数中将所需的键作为数组传递,从⽽只打印所需的属性。
第⼆个参数(函数)
我们还可以传⼊函数作为第⼆个参数。它根据函数中写⼊的逻辑来计算每个键值对。如果返回 undefined,则不会打印键值对。请参考⽰例
以获得更好的理解。
const user = { "name" : "Prateek Singh", "age" : 26}
// 结果{ "age" : 26 }
只有 age 被打印出来,因为函数判断 typeOf 为 String 的值返回 undefined。
第三个参数为数字
第三个参数控制最后⼀个字符串的间距。如果参数是⼀个数字,则字符串化中的每个级别都将缩进这个数量的空格字符。
// 注意:为了达到理解的⽬的,使⽤ '--' 替代了空格JSON.stringify(user, null, 2);//{//--"name": "Prateek Singh",//--"age": 26,//--"country": "India"//}
第三个参数为字符串
如果第三个参数是 string,那么将使⽤它来代替上⾯显⽰的空格字符。
JSON.stringify(user, null,'**');//{//**"name": "Prateek Singh",//**"age": 26,//**"country": "India"//}// 这⾥ * 取代了空格字符
toJSON ⽅法
我们有⼀个叫 toJSON 的⽅法,它可以作为任意对象的属性。JSON.stringify 返回这个函数的结果并对其进⾏序列化,⽽不是将整个对象转
换为字符串。参考下⾯的例⼦。
json转换对象
const user = { firstName : "Prateek", lastName : "Singh", age : 26, toJSON() {    return {      fullName: `${this.firstName} + ${this.lastName}`    }; }}console.log(JSO 这⾥我们可以看到,它只打印 toJSON 函数的结果,⽽不是打印整个对象。
我希望你能学到 stringify() 的⼀些基本特征。
如果你觉得这篇⽂章有⽤,请点赞,然后跟我读更多类似的精彩⽂章。
亲,点这涨⼯资

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。