2012-08-13 103 views
0

我有這樣一段代碼: -錯誤JSON解碼 - Facebook的

<?php 
$xml = file_get_contents("http://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,%20share_count,%20like_count,%20comment_count,%20total_count,%20commentsbox_count,%20comments_fbid,%20click_count%20FROM%20link_stat%20WHERE%20url='http://www.facebook.com/nokia'"); 
echo $xml; 
$obj = json_decode($xml); 
print $obj; 
print $obj->{'like_count'}; 
?> 

,它給我下面的錯誤: -

{"data":[{"url":"http:\/\/www.facebook.com\/nokia","normalized_url":"http:\/\/www.facebook.com\/nokia","share_count":1240,"like_count":8622663,"comment_count":287,"total_count":8624190,"commentsbox_count":2,"comments_fbid":4048973,"click_count":10}]} 
Catchable fatal error: Object of class stdClass could not be converted to string in C:\xampp\htdocs\nokia_app\test.php on line 5 

我如何糾正呢?

+0

@andrewsi那麼如何我將能夠在JSON來獲取數據?注意:注意:Undefined variable:obj在C:\ xampp \ htdocs \ nokia_app \ test.php上,第5行 注意:未定義變量:obj在C:\ xampp \ htdocs \ nokia_app \第6行的test.php 注意:試圖獲取第6行的C:\ xampp \ htdocs \ nokia_app \ test.php中的非對象屬性 – 2012-08-13 20:25:22

+1

從錯誤消息的外觀來看,您試圖打印'$ obj',但PHP不能直接打印出來。 – andrewsi 2012-08-13 20:27:14

回答

2

您需要在提出這些類型的問題之前研究API返回的內容。

$xml = file_get_contents("http://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,%20share_count,%20like_count,%20comment_count,%20total_count,%20commentsbox_count,%20comments_fbid,%20click_count%20FROM%20link_stat%20WHERE%20url='http://www.facebook.com/nokia'"); 
$obj = json_decode($xml); 
var_dump($obj->data[0]->{'like_count'}); 
+0

好的,這就是我一直在尋找的。但輸出是'int(1522)'我怎麼才能得到'1522'作爲答案。有什麼可以做的,或者PHP str_replace必須被使用嗎? – 2012-08-13 20:31:15

+1

'echo $ obj-> data [0] - > {'like_count'}' – Tim 2012-08-13 20:32:06

+0

我同意你的觀點,對這種事情是陌生的。感謝所有的幫助@Tim – 2012-08-13 20:33:29

0

如果你真的需要在一個陣列處理數據的嘗試:

class ObjectToArray { 
    public static function convert($object) { 
    if(!is_object($object) && !is_array($object)) { 
     return $object; 
    } 

    if(is_object($object)) { 
     $object = get_object_vars($object); 
    } 

    return array_map('ObjectToArray::convert', $object); 
    } 
} 

$aData = ObjectToArray::format($theObject); 

print_r($aData);