2016-08-14 178 views
0

我解析下面的JSON,它應該通過承諾返回消息[]。它是在英雄樣品項目中使用的HTTP文檔中JSON解析返回{對象,對象}

{ 
"data": [ 
{"id":"1","commid":"0","subject":"test1subject","body":"test1 body"}, 
     {"id":"2","commid":"1","subject":"lkjhlkjh","body":"nbvjhg"} 
] 
} 

據而不是返回與對象數據陣列相同的代碼。我怎樣才能讓它像在例子中那樣工作。它需要返回一個消息[]

return this.http.get('messages.json') 
       .toPromise() 
       .then(this.extractData) 
       .catch(this.handleError); 

private extractData(res: Response) { 
let body = res.json(); 
console.log(body); 
return body.data || { }; 
} 

這裏是在我的組件 出口類消息的代碼{ ID:號碼; commid:number; //這個消息所屬的社區ID爲 subject:string; body:string; } msgs:Message []; (this.msgService.getMessages()。)(messages => {this.msgs = messages;});

這裏是角文檔樣本: http://plnkr.co/edit/KZGeyULqrcuZDSeg0CkF?p=preview

+0

你問什麼用的console.log打印()語句,還是關於承諾中返回的內容?你到底在期待什麼? –

+0

看看angular2 doc示例,json解析通過承諾返回Hero [],我想要相同的行爲。我使用相同的代碼。 –

+1

您的承諾確實會返回一個包含兩個對象的數組,這些對象包含一個id,commid等,就像在json中一樣。如果您需要查看這些對象的內容,請使用您的調試器,或使用'console.log(JSON.stringify(body.data))'。目前還不清楚你真正期望什麼,因爲你沒有顯示消息是什麼,也沒有顯示任何使用返回的承諾的代碼。 –

回答

0

我用下面的PHP回到我想要的東西:

$item_type = "data"; 
$rows = array('data' => array()); 
while($r = mysqli_fetch_assoc($result)) { 
$rows['data'][] = $r; 
} 

echo json_encode($rows,JSON_NUMERIC_CHECK);