2017-01-18 71 views
0

對於angular2我是新的,我是http.get(「url」)方法獲取json類型的數據,如何設置typescript數據類型(見下文)(這是響應的一部分數據))在angular2對象中。
如何在angular2中爲響應json數據設置數據類型

這是響應數據的一部分:

{ 
"items":[ 
{ 
"aliases":[ 
"http://www.xyz.in", 
"http://facebook.xyz.in" 
], 
"styling":{ 
"tag_background_color":"#E0EAF1", 
"tag_foreground_color":"#3E6D8E", 
"link_color":"#0077CC" 
}, 
"related_sites":[ 
{ 
"relation":"meta", 
"api_site_parameter":"meta.xyz", 
"site_url":"http://met.xyz.in" 

}, 
{ 
"relation":"chat", 
"name":"Stack Overflow Chat" 
} 
], 
"markdown_extensions":[ 
"Prettify" 
], 
"launch_date":1221436800, 
"closed_beta_date":1217462400, 
"site_state":"normal", 
"favicon_url":"https://cdn.sstatic.net/Sites/xyz/img/favicon.ico", 
"name":"Stack Overflow", 
"site_type":"main_site" 
}]} 

我已經創建到:

import {Related_sites,Styling} from "./all_type1"; 
    import {Injectable} from "@angular/core"; 
    export interface Items{ 
     aliases:any; 
     styling:Styling[];  
     related_sites:Related_sites[]; 
     markdown_extensions:any; 
     launch_date: number; 
     closed_beta_date: number; 
     site_state: string; 
     favicon_url: string; 
     name: string; 
     site_type: string;} 


export interface Styling { 
    tag_background_color: string; 
    tag_foreground_color: string; 
    link_color: string; 
} 
export interface Related_sites{ 
    related_sites:[ 
     { 
     relation:string; 
     api_site_parameter:string; 
     site_url:string; 
    }, 
    { 
     relation:string; 
     name:string; 

    }] 
} 

這是正確的方式或不?任何一個可以幫助...

+0

它在代碼中未定義? – echonax

+0

這取決於你的期望。 '因爲Items []'只告訴IDE可以安全地假設'data'是'Items []',但如果不是,它在運行前沒有任何影響。在運行時,如果數據實際上不符合接口,則會導致錯誤。 –

+0

@ suresh.t你可以請發佈確切的錯誤消息? –

回答

1

您需要更改您的服務

.then(response =>response.json().data as Items[]) 

以下幾點:

.then(response =>response.json() as Items[]) 

那麼它應該工作正常,至少在我測試了它:)

由於您沒有提供組件中正在發生的事情,所以我們在此添加:

this.myService.getItemData() 
     .then(data => { 
      this.items = data 
    }) 
+0

這個答案對你有幫助嗎? – Alex

相關問題