这是我的班级:
export class Patient {
constructor(public id: number, public name: string, public location: string, public bedId: number, public severity: string,
public trajectory: number, public vitalSigns: [GraphData[]], public latestReading: GraphData[]){
}
public get getCombinedVSData(): Array<GraphData>{
let combinedVitalSigns: GraphData[] = [];
for (let data of this.vitalSigns){
combinedVitalSigns.push(data[0]);
}
return combinedVitalSigns;
}
}
当我打印我的一位病人时,
console.log(this.patientService.patients[0]);
我明白了:
在我的应用程序中,我需要将患者转换为JSON以通过拖放移动它:
let thisIsNotFine=JSON.stringify(this.patientService.patients[0]);
这就是问题所在。当我将它转换回JS对象并打印时,
console.log(JSON.parse(thisIsNotFine));
我明白了:
正如您所看到的,它在控制台中不再被称为Patient
,并且getCombinedVSData
getter已经消失。
这是正常行为吗?将它转换为JSON时,如何在对象上保留getter?谢谢。
答案 0 :(得分:2)
从JSON docs开始,JSON不能包含函数,因此您的方法不会被解析为JSON。有效数据类型是字符串,数字,对象,数组,true,false和null。
以下是json.stringify()
和json.parse()
从对象中删除方法的示例:
var obj = {
"prop" : "value",
"method" : function( num ){
return num + 1;
}
};
var json = JSON.stringify( obj );
var new_obj = JSON.parse( json );
Object.keys( new_obj ).forEach(function(key){
console.log( key + " : " + new_obj[key] );
});