【问题标题】:Is there something like object.toJSON in ES6? [duplicate]ES6 中有类似 object.toJSON 的东西吗? [复制]
【发布时间】:2015-11-26 17:23:27
【问题描述】:

我使用的是 ES6,我使用 Babel 转译成普通的 JavaScript。

我想将对象序列化为 JSON 格式,想知道 ES5、ES6 是否提供了方便的功能。

对于MapsSets,ES7 中提出了toJSON()-function

【问题讨论】:

    标签: javascript ecmascript-6 babeljs


    【解决方案1】:

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

    它适用于所有当前的浏览器;如果您需要一个真正旧浏览器的后备,您可以使用Crockford's 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);
    });
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2015-11-08
      • 2011-10-09
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 2020-04-10
      相关资源
      最近更新 更多