将后端属性映射到前端属性

时间:2016-11-01 14:23:12

标签: json dictionary angular typescript

假设我们从后端得到以下结果:

{
    idPerson:string, 
    name: string
}

现在我有一个打字稿类:

class Option {
    id: string;
    text: string;
}

所以,后端给了我以下内容:

"[{idperson: "1", name: "foo"}, {idperson:"2", name:"bar"}]"

当我从角度http请求收到答案时,我正在执行以下操作:

let options: any[] = [];
options = JSON.parse(response);

所以它给了我:

[{idperson: "1", name: "foo"}, {idperson:"2", name:"bar"}]

但我真的想将键从后端映射到前端键并获得:

[{id: "1", text: "foo"}, {id:"2", text:"bar"}]

我如何映射它们?

1 个答案:

答案 0 :(得分:3)

let options: Option[];
options = JSON.parse(response).map(item => ({
  id: item.idPerson,
  text: item.name
}));

如果您不需要Option类中的任何方法,我会创建一个接口。

interface Option {
  id: string;
  text: string;
}

let options: Option[];
options = JSON.parse(response).map(item => ({
  id: item.idPerson,
  text: item.name
}));

如果您确实需要Option类上的方法:

class Option {
  constructor(public id: string, public text: string) {}

  public doSomething() {
    console.log(this.id)
  }
}

let options: Option[];
options = JSON.parse(response).map(item => new Option(item.idPerson, item.name));