Отправка ответа в Angular2 на запрос http, оставаясь в формате JSON

Я пытаюсь Angular2 с TypeScript и возникают проблемы, пытаясь получить ответ от моего http-запроса. Это ответ массива от сервера, и у меня есть определенный класс, который должен быть сопоставлен с ним. Код ниже. Кто-нибудь может определить проблему?

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

Список людей определяется в классе как

peopleList: People[];

Мой класс Люди выглядит так

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

Выходными данными всегда являются данные в массиве, но только массив Json. Если я изменяю свойство Name на DummyName, оно все равно показывает тот же вывод для данных в массиве после того, как оно было "преобразовано" в People[].

Должен ли я видеть свойства класса? Я использую отладчик Chrome для опроса переменной


Редактировать, добавив console.log() info. Это массив около 300.

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

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

1 ответ

Решение

Результат, который вы получаете, когда звоните res.json() является только простым объектом (POJO), а не экземпляром класса. Это означает, что их тип будет object, Тот факт, что вы "разыгрываете" вручную, не меняет того факта, что объекты не являются экземплярами класса. People,

У вас есть два варианта работы с POJOS:

  • Определите их через интерфейс (для этого вы должны превратить людей в интерфейс)
  • Сопоставьте каждый элемент из вашего POJO-массива с экземпляром класса People с помощью метода constructor
Другие вопросы по тегам