当我转换为Class对象时,当我记录Class对象时弹出Json的额外值。
这是班级模型
export class PersonModel {
_index : string;
_type : string;
_id : string;
demo : "test";
_score : number;
_source : {
name : string;
age : number;
salary:number;
details :{
year: number;
education:{
score:number;
};
};
};
}
这是我打印类对象时得到的最终输出。它甚至没有从类中打印demo字段。
{
"_index":"person",
"_type":"single",
"_id":"AV-Migit0bfajafmy3",
"_version":2,
"found":true,
"_source":{
"name":"hyd",
"salary":600000,
"age":27
}
我想知道如何将Json转换为Class Object,以便我可以填充详细信息字段并将其保存到数据库中。
以下是转换代码
getPerson (id : string): Observable<PersonModel> {
const url = `${this.url}/${id}`;
return this.http.get< PersonModel >(url);
}
答案 0 :(得分:1)
您实际上应该为 source
和 details
创建单独的类,导入它们并在PersonModel类中引用
答案 1 :(得分:0)
此代码不创建您的类的实例并填充它。相反,它使用Http响应中提供的数据创建一个类似于类的JSON对象。
getPerson (id : string): Observable<PersonModel> {
const url = `${this.url}/${id}`;
return this.http.get< PersonModel >(url);
}
如果你想要一个类的实例(所以你可以填充任何其他属性或调用它的方法),你需要创建实例并将JSON对象复制到其中。
调用组件subscribe()
中的类似内容:
const myPerson = Object.assign(new PersonModel(), <dataFromHttp>)
答案 2 :(得分:0)
你的demo类型有问题,应该是 demo:string
export class PersonModel {
_index : string;
_type : string;
_id : string;
demo : string;
_score : number;
_source : {
name : string;
age : number;
salary : number;
details : {
year: number;
education : {
score : number;
};
};
};
}