<分区>
我使用的是 ES6,我使用 Babel 将其转译为普通的 JavaScript。
我想将对象序列化为 JSON 格式,想知道 ES5、ES6 是否提供了方便的功能。
对于 Maps
和 Sets
,ES7 中提出了一个 toJSON()
函数
<分区>
我使用的是 ES6,我使用 Babel 将其转译为普通的 JavaScript。
我想将对象序列化为 JSON 格式,想知道 ES5、ES6 是否提供了方便的功能。
对于 Maps
和 Sets
,ES7 中提出了一个 toJSON()
函数
最佳答案
您可以使用 JSON.stringify
并将任何类型的变量传递给它(假设它可以用 JSON 表示)。
它适用于所有当前的浏览器;如果你需要一个真的旧浏览器的回退,你可以使用Crockford's JSON-js .
但是,请记住,对于对象,只有公共(public)属性会被序列化。没有通用的方法来动态序列化函数变量等。
这就是为什么一些特殊的对象类型会提供一个toJSON
或类似的方法。为了对任意对象使用这样的函数,您必须将一个函数作为第二个参数传递给 JSON.stringify
,它检查是否存在 toJSON
函数。
例如,以下应该有效(未经测试,只是我的想法):
var jsonString = JSON.stringify(someLargeObject, function(key, value){
return (value && typeof value.toJSON === 'function')
? value.toJSON()
: JSON.stringify(value);
});
如果您的 someLargeObject
包含一个带有 toJSON
方法的子对象,此代码将使用该对象的实现,否则使用 JSON.stringify
.
关于javascript - ES6 中有类似 object.toJSON 的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32332196/
相关文章:
javascript - 没有再生器的 babel-plugin-transform-async-to-module-method
javascript - mobx 的 `action.bound` 和箭头函数在类函数上的区别?
javascript - 将node.js服务器的数据显示到html页面
javascript - 可以在文本文件中调用 html 和 css 标签吗?
javascript - 使用 ES6 编写的 React 组件获取 "cannot read property of undefined"