2012-08-13 53 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);