2017-06-06 4 views
0

Ich versuche Objekte in Typoskript stringify die usign private Eigenschaften wie dieseAngular des JSON.stringify mit Eigentum Probleme

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; 
    } 


} 

Aber wenn ich JSON.stringfy() verwenden, durchgeführt wurde, werden die privaten Eigenschaften lesen und geht nicht durch die get und set-Methoden.

Erwartet:

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

} 

empfangen:

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

} 

Es bemerkt wird, dass die Eigenschaft unterstrichen wird, sollte aber nicht, sollte Json mit dem Namen kommen, die in den Getter und Setter umgesetzt wurde und nicht in privaten Eigenschaften

+0

Können Sie ein Beispiel für die Verwendung dieser Methoden geben? Wo benutzt du 'JSON.stringify'? – echonax

Antwort

-1

JSON.stringify schaut nur auf Objektfelder, nicht auf Methoden oder Eigenschaften (Getter/Setter).

Wenn undefined, eine Funktion oder ein Symbol wird während der Umwandlung angetroffen wird entweder weggelassen (wenn es in einem Objekt gefunden wird)

...

Ein Getter oder Setter ist definiert als eine Funktion und wird daher bei der Konvertierung ignoriert. Nur die privaten Felder des Objekts finden ihren Weg in der JSON. Und sie werden nur dort sein, wenn sie tatsächlich initialisiert werden.