【问题标题】:TypeScript class to JSONTypeScript 类到 JSON
【发布时间】:2017-04-28 04:06:27
【问题描述】:

我有一个类数组,其中类看起来像:

class Tag{
    select: string;
    search: string;
}

我想将它转换为 JSON,它可能看起来像 [{select: "blah", search: "bleh"}, {...}, {...}]

这可能吗?因为在 Angular 2 教程中,您可以使用以下行做相反的事情:

.map((r: Response) => r.json().data as Hero[]);

【问题讨论】:

  • js中的大部分东西都是对象所以是的
  • @madalinivascu 你知道什么函数吗?
  • 做到了,您要发布答案以便我标记它吗?
  • 你的意思是你想把这个类的一个instance转换成一个普通的旧JS对象吗?或者您想将此类的 instance 转换为 JSON 字符串?或者你想转换类本身——这意味着什么?另外请注意,这个问题与 Angular 无关,与 TypeScript 关系不大。

标签: javascript json typescript


【解决方案1】:

您可以在班级中添加toJSON() 函数。当在您的类实例上调用 JSON.stringify() 时,会自动调用此函数

class Person{
  constructor(readonly name){}

  toJSON(){
    return {
      firstName: this.name
    }
  }
}

现在如果你 console.log 你的类实例使用 JSON.stringify 你会看到这个结果

const person = new Person("Tom"); console.log(JSON.stringify(person));

输出

{
  firstName: "Tom"
}

【讨论】:

    【解决方案2】:

    您可以使用 JSON.stringify() 将 javascript 对象转换为 json 字符串 由于类和类的实例是 javascript 中的对象,因此您也可以将它们字符串化

    【讨论】:

      【解决方案3】:

      使用JSON.stringify() js 中的大多数东西都是对象。

      class Hero{}
      let Heros:Hero[] = JSON.stringify(response.data);
      

      所以Heros 是你想要的数组:)

      【讨论】:

      • 谢谢,但是madalin首先给了我答案,所以如果他做出答案,我会标记它。还是 +1
      • 这不是答案。此外它甚至不会编译。
      猜你喜欢
      • 2017-03-03
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多