具有相同结构Angular 2的不同JSON的通用对象

时间:2017-05-18 08:13:27

标签: json angular typescript

我有JSON数据的问题我在我的基地有3个表"字典"具有相同的结构和不同的列名:

{"id":1,"test_1":"test"},{"id":2,"test_1":"lalala"} - first JSON 


{"id":1,"test_2":"****"},{"id":2,"test_2":"afery-t"} - secound JSON

我想在Angular 2中创建一个类

 export class dictionary{

   id:number;
   dictValue:string;

}

将这个差异JSON对象转换为on是否可行,因为这不起作用:

res => <dictionary[]>  res.json()

在Html模板中,我有Json对象而不是NgFor中的类值。

 <tr *ngFor="let item of directoryArray">
{{item.test_1}} - i want to have {{item.dictValue}}
</tr>

控制器

 directoryArray:dictionary[];
this._httpService.getAll().subscribe(
            data => this.directoryArray = data,
            error => alert(error),
            () => console.log("Done"));

感谢您的帮助告诉我是否有可能或者我必须更改base中的值或为所有JSON创建不同的对象。

1 个答案:

答案 0 :(得分:2)

如上所述,使用界面:

export interface dictionary { // I would use 'Dictonary' here
   id:number;
   dictValue:string;
}

不知道你的getAll函数是怎样的,这是获得“第一个”JSON的一个例子:

getFirstJSON(): Observable<dictionary[]> {
  return this.http.get('the Url')
    .map(res => res.json().map((x:any) => Object.assign({id:x.id,dictValue:x.test_1})))
}

我们使用map设置属性以匹配您的界面。

然后在你的组件中:

directoryArray: dictionary[];

this.service.getFirstJSON()
  .subscribe(data => {
    this.directoryArray = data;
  })

现在我们有了与界面匹配的属性,可以在模板中使用:

<tr *ngFor="let item of directoryArray">
  <td>{{item.dictValue}}</td>
</tr>