144. 序列化和反序列化JSON不支持的数据类型
分享给更多人
中等难度 -通过 / -执行
显然,JSON.parse() JSON.stringify()不支持JSON data type以外的数据类型。
JSON.stringify({a:1n}) // Error
undefined
会被忽略,或者转换为null
。
JSON.stringify([undefined]) // "[null]"JSON.stringify({a: undefined }) // "{}"
NaN
和 Infinity
也会被当作null
处理。
JSON.stringify([NaN, Infinity]) // "[null,null]"JSON.stringify({a: NaN, b:Infinity}) // "{"a":null,"b":null}"
相信规则请参考MDN。
但是有些时候,我们也需要有能力序列化更多的数据类型。
好了,请完成支持以下数据类型的serialize/deserialize函数
- primitives (symbol除外)
- object literals
- array
Object literals 和 array 由上述primitive组成,或者自身nest。
以下代码需要能顺利工作,请据此完成代码。
parse(stringify([1n, null, undefined, NaN])) // [1n, null, undefined, NaN]parse(stringify({a: undefined, b: NaN}) // {a: undefined, b: NaN}
代码中允许使用JSON.stringify()和JSON.parse()。