Hed*_*dge 2 javascript ecmascript-6 babeljs
我正在使用ES6,我使用Babel转换成普通的JavaScript.
我想将对象序列化为JSON格式,我想知道ES5,ES6是否提供了方便的功能.
对于Maps并Sets有一个toJSON()在ES7建议-功能
您可以使用JSON.stringify并传递任何类型的变量(假设它可以用JSON表示).
它适用于所有当前浏览器; 如果你需要一个真正旧浏览器的后备,你可以使用Crockford的JSON-js.
但是,请记住,对于对象,只有公共属性被序列化.没有通用的方法来动态地序列化函数变量等.
这就是一些特殊对象类型提供toJSON或类似方法的原因.为了对任意对象使用这样的函数,必须将函数作为第二个参数传递JSON.stringify,以检查toJSON函数是否存在.
例如,以下应该可以工作(没有测试,只是从我的头脑中):
var jsonString = JSON.stringify(someLargeObject, function(key, value){
return (value && typeof value.toJSON === 'function')
? value.toJSON()
: JSON.stringify(value);
});
Run Code Online (Sandbox Code Playgroud)
如果您someLargeObject包含带有toJSON方法的子对象,则此代码将使用该对象的实现,否则使用JSON.stringify.
| 归档时间: |
|
| 查看次数: |
9797 次 |
| 最近记录: |