Angular的Json.stringify存在属性问题

时间:2017-06-06 13:03:36

标签: json angular typescript getter-setter stringify

我试图在Typescript中对对象进行字符串化,这些对象实现了像这样的私有属性

export class Foo {
   private _property1:string;
   private _property2:string;
   private _property3:string;

   get property1(): string {
        return this._property1;
   }
   set property1(value: string) {
        this._property1 = value;
   }
   get property2(): string {
        return this._property2;
   }
   set property2(value: string) {
        this._property2 = value;
   }
   get property3(): string {
        return this._property3;
   }
   set property3(value: string) {
        this._property3 = value;
   }


}

但是当我使用JSON.stringfy()时,会读取私有属性,并且不会通过get和set方法。

预期:

{
  "property1": "",
  "property2": "",
  "property3": "",

}

收到:

{
  "_property1": "",
  "_property2": "",
  "_property3": "",

}

注意到该属性带有下划线,但不应该,Json应该带有在getter和setter中实现的名称而不是私有属性

1 个答案:

答案 0 :(得分:0)

JSON.stringify仅查看对象字段,而不是方法或属性(getter / setter)。

  

如果在转换过程中遇到undefined,函数或符号,则省略它(当它在对象中找到时)

     

...

getter或setter被定义为函数,因此在转换中将被忽略。只有对象的私有字段才能在JSON中找到它们的路径。如果它们实际上已初始化,它们将只存在于那里。