【问题标题】:toJSON method not getting called when in nested array在嵌套数组中未调用 toJSON 方法
【发布时间】:2020-11-15 13:31:53
【问题描述】:

我目前正在使用 typescript 开发一个项目,并使用 toJSON 和 fromJSON 方法正确解析我的对象。

在我的一个类上调用 JSON.stringify() 时遇到一个奇怪的问题,它不会调用嵌套参数的 toJSON 方法。

以下是我的课程总结:

class TFClass {
   ...

   toJSON(): ITFSerialized {
      console.log('not printing')
      ...
   }

}

class ConfigClass {
   transfer_functions: TFClass[];
   ...
   toJSON(): IConfigSerialized {
      return Object.assign({}, this, {
         transfer_functions: this.transfer_functions,
      });
   }

}

当我调用 JSON.stringify(<ConfigClass>obj) 时,transfer_functions 变量的类型为 TFClass[],因此它不会进入 TFClass toJSON 方法。

但是如果说 transfer_functions 是 TFClass 类型(不是数组),那么它可以输入相应的 toJSON 方法。

我可以做些改变来使它正常工作吗?

【问题讨论】:

    标签: javascript json typescript class types


    【解决方案1】:

    确保包含类 reviver 作为 JSON.parse 函数的第二个参数。这样可以确保正确调用 toJSON 方法。

    【讨论】:

    • 虽然我想我明白你在这里的意思(确保解析的对象变成TFClass,所以当字符串化再次时它们将有toJSON()可用?),这个细节问题中没有描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    相关资源
    最近更新 更多