关于javascript:在ES6中有类似object.toJSON的东西吗?

Is there something like object.toJSON in ES6?

本问题已经有最佳答案,请猛点这里访问。

我正在使用ES6,我用babel编写普通的javascript。

我想将对象序列化为JSON格式,并想知道ES5、ES6是否提供了一个方便的函数。

对于MapsSets,ES7中提出了toJSON()函数。


您可以使用JSON.stringify并将任何类型的变量传递给它(假定它可以用JSON表示)。

它适用于所有当前的浏览器;如果您需要一个真正旧的浏览器的回退,您可以使用Crockford的JSON JS。

但是,请记住,对于对象,只有公共属性是序列化的。目前还没有通用的方法来序列化函数变量等。

这就是为什么一些特殊的对象类型提供了toJSON或类似的方法。为了对任意对象使用这样的函数,必须将函数作为第二个参数传递给JSON.stringify,该参数检查toJSON函数的存在。

例如,以下内容应该有效(不是测试,只是从我的头脑中):

1
2
3
4
5
var jsonString = JSON.stringify(someLargeObject, function(key, value){
    return (value && typeof value.toJSON === 'function')
        ? value.toJSON()
        : JSON.stringify(value);
});

如果您的someLargeObject包含一个子对象和toJSON方法,则此代码将使用该对象的实现,否则将使用JSON.stringify