首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用类型记录解析响应数据

使用类型记录解析响应数据
EN

Stack Overflow用户
提问于 2017-11-08 14:31:15
回答 1查看 4K关注 0票数 2

我有如下响应数据:

代码语言:javascript
复制
{
  "content": [{
    "id": 1,
    "userName": "v7001",
    "status": 1,
    "userInfo": {
      "id": 1,
      "fullName": "Naruto Uzumaki",
      "firstName": "Naruto",
      "lastName": "Uzumaki",
      "address": "Konoha",
      "dob": 1509901200000
    }
  }, {
    "id": 2,
    "userName": "v7002",
    "status": 0,
    "userInfo": {
      "id": 2,
      "fullName": "Hinata Hyuga",
      "firstName": "Hinata",
      "lastName": "Hyuga",
      "address": "Konoha",
      "dob": 1509987600000
    }
  }],
  "last": true,
  "totalElements": 3,
  "totalPages": 1,
  "size": 20,
  "number": 0,
  "first": true,
  "sort": null,
  "numberOfElements": 3
}

和用户角度4来显示数据。我创建了两个界面:用户信息

代码语言:javascript
复制
export class UserInfo {
  id: number;
  fullName: string;
  firstName: string;
  lastName: string;
  address: string;
  dob: string
}

和用户

代码语言:javascript
复制
import {UserInfo} from './user-info'

export class User {
  id: number;
  userName: String;
  status: String;
  userInfo: UserInfo;
}

用户服务:

代码语言:javascript
复制
getUsers(): Promise<User[]> {
  return this.http.get(this.userUrl)
    .toPromise()
    .then(response => response.json().data as User[])
    .catch(this.handleError);
}

我检查了网络选项卡,API获得了成功的数据。关于构成部分:

代码语言:javascript
复制
user: User[];
selectedUser: User;
newUser: User;
data: any={};

constructor(private router: Router,
            private userService: UserService) {}

ngOnInit() {
  this.userService.getUsers().then(user => this.user = user); 
}

在html中:

代码语言:javascript
复制
 <tr role="row" class="odd" *ngFor="let lst of user.content">
   <td>{{lst.userInfo.fullName}}</td>
   <td>{{lst.userInfo.address}}</td>
</tr>

但是当应用程序运行时,错误信息会显示在控制台上:内容无效。this.user是未定义的。请给我建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-08 14:48:39

如果您希望从getUsers方法接收getUsers集合,那么尽管有response.json().data,仍然要返回response.json().content,然后User[]可以为集合提供User[]工具

代码语言:javascript
复制
getUsers(): Promise<User[]> {
  return this.http.get(this.userUrl)
    .toPromise()
    .then(response => response.json().content as User[])
    .catch(this.handleError);
}

消费

代码语言:javascript
复制
this.userService.getUsers().then(users => this.users = users);

代码语言:javascript
复制
<tr role="row" class="odd" *ngFor="let lst of users">
  <td>{{lst.userInfo.fullName}}</td>
  <td>{{lst.userInfo.address}}</td>
</tr>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47182319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档