从 http 请求在 Angular2 中做出响应保持 JSON

Making response in Angular2 from http request staying as JSON

我正在尝试使用 TypeScript 的 Angular2,但在尝试从我的 http 请求中获取响应时遇到问题。它是来自服务器的数组响应,我定义了一个应该映射到它的 class。代码如下。谁能发现问题?

this.http
  .get(this.testUrl, {
    data: JSON.stringify(mockData),
    headers: this.headers
  })
  .map(response => response.json() as People[])
  .subscribe(result => this.peopleList = result);

人员列表在 class 中定义为

peopleList: People[];

我的人 class 看起来像这样

export class Flight {
  Name: string;
  Age: number;
}

输出始终是数组中的数据,但只是 Json 数组。如果我将 Name 的 属性 更改为 DummyName,在 'converted' 变成 People[].

之后,它仍然显示数组中数据的相同输出

我应该看到 class 属性吗?我正在使用 Chrome 调试器来查询变量


编辑添加 console.log() 信息。它是一个大约 300 的数组。

[0 … 99]
0 : Object
Name : "Simon"
Age : 45
__proto__:Object

1:Object
Name:"Luke"
Age:21
__proto__:Object

调用 res.json() 时得到的结果只是一个普通对象 (POJO),而不是 class 实例。这意味着它们的类型将是 object。事实上,你 "cast it" 手动不会改变对象不是 class People.

实例的事实

您有两个选项来处理 POJOS:

  • 通过界面定义它们(为此你应该改变 People 进入界面)
  • 将 POJO 数组中的每个元素映射到 People 的实例中 class 通过使用构造方法