2017-01-29 17 views
-2

私は2番のアプリケーションを開発しています。サービスを作成しましたが、今はどのようにjsonデータから特定の配列を取得したいのですか?角2のJSONデータから配列を取得する方法

は、私は、これは、すべてのJSONデータを返している。この

getProjects(): Promise<Project>{ 
return this.getData() 
    .toPromise() 
    .then(response => response.json()) 
    .catch((error: string) => console.log(error)); 
} 

などのサービスコードを持っていますが、私は「プロジェクト」配列は、JSONからフェッチすることにしたいです。

JSONコード

{ 
    "features":[], 
    "posts":{}, 
    "Projects":[ 
    { 
     "id":"proj-1", 
     "name":"Design for creative", 
     "meta":{ 
      "date":"03 November, 2016", 
      "url":"http://www.pixelsocket.com", 
      "skills":[ 
       "ui design", 
       "programming", 
       "marketing" 
      ] 
     }, 
     "images":[ 
      "assets/images/design-creative-01.jpg", 
      "assets/images/design-creative-02.jpg", 
      "assets/images/design-creative-03.jpg", 
      "assets/images/design-creative-04.jpg" 
     ], 
     ... 
} 

更新

getProject(id: string): Promise<Project>{ 
const url = `${this.getProjects()}/${id}`; // can i call getProjects() method here 

return this.http.get(url) 
    .toPromise() 
    .then(response => response.json()) 
    .catch((error: string) => console.log(error)); 
} 
+0

上記の更新されたコードをご覧ください。ありがとう – Sohail

答えて

0
getProjects(): Promise<Project>{ 
return this.getData() 
    .toPromise() 
    .then(response => response.json().projects) // <<< added .projects 
    .catch((error: string) => console.log(error)); 
} 
、JSONに変換する方法を使用し
getProject(id: string): Promise<Project>{ 
    return this.getProjects() 
    .then(p => `${p}/${id}`) // no idea where `id` should come from 
    .then(url => { 
    return this.http.get(url) 
    .toPromise() 
    .then(response => response.json()) 
    .catch((error: string) => console.log(error)); 
    }) 
} 
+0

'getProjects'が配列ではなく' Promise'を返すので、できません。 –

1

private extractData(res: any) { 
     if (res.status < 200 || res.status >= 300) { 
      throw new Error('Bad response sttus:' + res.status); 
     } 
     let serviceData = res.json().projects; 
     return serviceData || {}; 
    } 

getProjects(): Promise<Project>{ 
return this.getData() 
    .toPromise() 
    .map(this.extractData); 
} 
関連する問題