【发布时间】:2019-10-01 07:24:40
【问题描述】:
当我们在 Map 或 Set 上调用 JSON.stringify 时,我们得到空数据:
console.log(JSON.stringify({foo: new Map([[1,2], [3,4]])}));
我们刚刚得到:
{"foo":{}}
我可以或多或少地使用以下方法解决上述问题:
console.log(JSON.stringify({foo: Array.from(new Map([[1,2], [3,4]]))}));
但我的问题是 - 除了 Map 和 Set 之外,还有其他核心 JS 类不会自动序列化吗?
【问题讨论】:
-
日期对象浮现在脑海。和符号。
-
是的,但它们没有以任何特殊方式表示;它们只是 JSON 输出中的字符串,因此当您解析 JSON 时,您仍然只有字符串。
-
似乎问题的区别在于产生有用与无用 JSON 序列化的类。
-
从此answer:
Dates、函数、undefined、Infinity、RegExps、Maps、Sets、Blobs、FileLists、ImageDatas、稀疏数组、类型化数组和其他复杂的类型。 -
是的,这就是我的意思是接收者需要知道将其转换回来。 JSON 的大部分价值在于自动翻译成一种语言类型。
标签: javascript node.js ecmascript-6