我试图在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中实现的名称而不是私有属性
答案 0 :(得分:0)
JSON.stringify
仅查看对象字段,而不是方法或属性(getter / setter)。
如果在转换过程中遇到
undefined
,函数或符号,则省略它(当它在对象中找到时)...
getter或setter被定义为函数,因此在转换中将被忽略。只有对象的私有字段才能在JSON
中找到它们的路径。如果它们实际上已初始化,它们将只存在于那里。