Angular 4 Json对象为Class Object

时间:2018-01-31 19:03:10

标签: javascript json angular

当我转换为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);  
  }

3 个答案:

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