2017-06-28 21 views
1

我正在嘗試使用TypeScript的Angular2,並試圖從我的http請求中獲取響應。這是來自服務器的數組響應,我有一個應該映射到它的類定義。代碼如下。任何人都可以發現問題嗎?在http請求中以Angular2響應,保持爲JSON

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()信息。它的一個,當你調用res.json(),你得到的約300

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

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

您可以編輯您的文章,並給我們返回的數據?只需在'map'函數中添加一個'console.log(response.json());'。這樣,我們將能夠幫助你。 – trichetriche

+0

添加了日誌(或其中的一部分)。通過map()函數中的斷點,它只會被命中一次。不知道這是否是問題的跡象? – Matt

回答

0

結果陣列只是一個普通的對象(PO​​JO),而不是一個類的實例。這意味着他們的類型將是object。事實上,「手動」手動不會改變對象不是類別People的實例。

你有兩個選擇來處理的POJO對象:

  • 定義他們槽的接口(爲此,你應該改變人們 成一個接口)
  • 地圖的每一個元素,從你的POJO數組的一個實例人們 類使用的構造方法
+0

謝謝,我認爲Interface是首選方法。將類更改爲界面很簡單嗎?基於https://www.tutorialspoint.com/typescript/typescript_interfaces.htm它看起來像它 – Matt