鲜为人知的 JSON.stringify 用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了鲜为人知的 JSON.stringify 用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2612字,纯文字阅读大概需要4分钟。
内容图文
JS 中有许多常见的函数,我们可能每天都在使用它们,但是却不知道它们的一些额外功能。JSON.stringify
就是这样的一个函数,今天就来看下它的特殊用法。基础
JSON.stringify
方法接收一个变量,并将它转换成 JSON 表示形式。
const boy = { name: 'John', age: 23 }; JSON.stringify(boy); // {"name":"John","age":23}
JSON 就是纯字符串,它本质上是 JS 的一个子集,所以并不是所有的 JS 对象都能转换为 JSON:
const boy = { name: 'John', age: 23, hobbies: new Map([[0, 'coding'], [1, 'earn money']]) } JSON.stringify(boy) // {"name":"John","age":23,"hobbies":{}}
上面的例子中 Map 对象就会被忽略并转换为普通对象。而如果属性是函数的话则这个属性就会被忽略,感兴趣的同学可以试下。
第二个参数
JSON.stringify
可以接收第二个参数,可以称为 replacer
替换器。
你可以传入一个字符串数组,这个数组中具有的属性才会被转换,就像一个白名单。
const boy = { name: 'John', age: 23 } JSON.stringify(boy, ['name']) // {"name":"John"}
我们可以利用这个特性,只转换需要转换的属性,过滤掉如很长的数组、错误对象等。
这个 replacer
参数还可以接收一个函数。这个函数会遍历整个对象,并将键和值传入,让你决定该如何替换它们。
const boy = { name: 'John', age: 23, hobbies: new Map([[0, 'coding'], [1, 'earn money']]) } JSON.stringify(boy, (key, value) => { if (value instanceof Map) { return [...value.values()] } return value }) // {"name":"John","age":23,"hobbies":["coding","earn money"]}
而如果你返回了 undefined
(返回 null
不行),就将这个属性移除了:
JSON.stringify(boy, (key, value) => { if (typeof value === 'string') { return undefined } return value }) // {"age":23,"hobbies":{}}
第三个参数
第三个参数 space
控制了转换后的 JSON 串的间距。
如果参数是数字,则以该数字个数的空格进行缩进:
JSON.stringify(boy, null, 2) // { // "name": "John", // "age": 23, // "hobbies": {} // }
而如果参数是字符串,则以该字符串进行缩进:
JSON.stringify(boy, null, '--') // { // --"name": "John", // --"age": 23, // --"hobbies": {} // }
toJSON 方法
如果我们要转换的对象具有一个 toJSON
方法,那么就可以定制自己被序列化的过程。您可以从方法中返回一个新值,而不是序列化该对象,并且此值将被序列化,而不是原始对象。
const boy = { name: 'John', age: 23, hobbies: new Map([[0, 'coding'], [1, 'earn money']]), toJSON() { return { name: `${this.name} (${this.age})`, favorite: this.hobbies.get(0) } } } JSON.stringify(boy) // {"name":"John (23)","favorite":"coding"}
是不是很有趣?有时候仔细看一些文档还是很有用的~
参考文章
原文地址:https://mp.weixin.qq.com/s/_e83_G7RjVt2eR_ro7blOA
MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
本文来自 js教程 栏目,欢迎学习!
以上就是鲜为人知的 JSON.stringify 用法的详细内容。
内容总结
以上是互联网集市为您收集整理的鲜为人知的 JSON.stringify 用法全部内容,希望文章能够帮你解决鲜为人知的 JSON.stringify 用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。