热门

最新

红包

立Flag

投票

同城

我的

发布
cc18868876837
码飞_CC
6 年前
truecc18868876837

对大多数简单值来说,JSON字符串化和toString()的效果基本相同,只不过序列化的结果总是字符串,如图1。

所有安全的JSON值(JSON-safe)都可以使用JSON.stringify(..)字符串化。安全的JSON值是指能够呈现为有效JSON格式的值。
为了简单起见,我们来看看什么是不安全的JSON值。undefined、function、symbol(ES6+)和包含循环引用(对象之间相互引用,形成一个无限循环)的对象都不符合JSON结构标准,其他支持JSON的语言无法处理它们。
JSON.stringify(..)在对象中遇到undefined、function和symbol时会自动将其忽略,在数组中则会返回null(以保证单元位置不变)。如图2

对包含循环引用的对象执行JSON.stringify(..)会出错。
如果对象中定义了toJSON()方法,JSON字符串化时会首先调用该方法,然后用它的返回值来进行序列化。
如果要对含有非法JSON值的对象做字符串化,或者对象中的某些值无法被序列化时,就需要定义toJSON()方法来返回一个安全的JSON值。如图3,图4

CSDN App 扫码分享
分享
评论
2
打赏
  • 复制链接
  • 举报
下一条:
发际线越来越高了,希望明年还能有头发
立即登录