2017-06-28 16 views
1

私は、Angular2をTypeScriptで試していて、httpリクエストからの応答を取得しようとしています。これはサーバからの配列レスポンスであり、クラスにマップされるはずのクラスが定義されています。コードは以下の通りです。誰も問題を見つけることができますか?JSONとしてのHTTPリクエストからのAngular2での応答

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[]; 

マイピープルクラスとしてクラスで定義されているが、出力は常に、アレイ内のデータが、ちょうどJSON配列である。この

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

のように見えます。 NameのプロパティをDummyNameに変更すると、配列のデータがPeople []に​​変換された後も同じ出力が表示されます。

クラスのプロパティを表示する必要がありますか?変数を調べるためにChromeデバッガを使用しています


console.log()情報を編集して編集します。約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

のその配列は、あなたがres.json()を呼び出すときにあなたが得る結果はプレーンなオブジェクト(POJO)、いないクラスのインスタンスです。これは、そのタイプがobjectになることを意味します。 「キャストする」という事実は、オブジェクトがクラスPeopleのインスタンスではないという事実を手動で変更しない。

  • する(あなたがインターフェイスに人々 を変更する必要があり、このために)彼らはあなたがPOJO配列からのインスタンスに
  • 地図すべての要素をインターフェースの谷定義:

    あなたがPOJOを処理するための2つのオプションがあります人々あなたの投稿を編集し、私たちに返されたデータを示すことができるコンストラクタメソッド

+0

ありがとう、私はインターフェイスが好ましい方法だと仮定します。クラスをインタフェースに変更するのは簡単ですか? https://www.tutorialspoint.com/typescript/typescript_interfaces.htmに基づいています – Matt

関連する問題