2010-07-22 25 views
4
<?php 
$handle = fopen("https://graph.facebook.com/[email protected]&type=user&access_token=2227472222|2.mLWDqcUsekDYK_FQQXYnHw__.3600.1279803900-100001310000000|YxS1eGhjx2rpNYzzzzzzzLrfb5hMc.", "rb"); 
$json = stream_get_contents($handle); 
fclose($handle); 
echo $json; 
$obj = json_decode($json); 
print $obj->{'id'}; 
?> 

這裏是JSON:{"data":[{"name":"Sinan \u00d6zcan","id":"610914868"}]}PHP:JSON解碼問題

它的回聲,但JSON我無法打印ID。

我也試過:

<?php 
$obj = json_decode($json); 
$obj = $obj->{'data'}; 
print $obj->{'id'}; 
?> 
+2

a)而不是fopen/stream_get_contents/fclose,爲什麼不使用'$ json = file_get_contents($ url);'? b)看看'var_dump($ obj)',也許它會有所幫助。 – NikiC 2010-07-22 12:17:52

回答

3

data是一個數組,所以它應該是:

print $obj[0]->{'id'}; 
3

它看起來像關鍵"data"是對象的數組,所以這應該工作:

$obj = json_decode($json); 
echo $obj->data[0]->name; 
2

你試過 $obj->data$obj->id

更新:其他人已經注意到它應該是$obj->data[0]->id等等。

PS你可能不希望包括一個公共網站,像這樣在你的私人facebook的訪問令牌......

+0

隱私警告+1。 – Yahel 2010-07-22 14:09:19

4

注意,沒有在JSON的數組。

{ 
    "data": [ // <-- 
     { 
     "name": "Sinan \u00d6zcan", 
     "id": "610914868" 
     } 
    ]   // <-- 
} 

您可以嘗試$obj = $obj->{'data'}[0]以獲取該數組中的第一個元素。

1

這是比這更復雜一點,當你得到一個關聯數組出來的:

$json = json_decode('{"data":[{"name":"Sinan \u00d6zcan","id":"610914868"}]}', true); 

那麼你可以回聲該ID與:

var_dump($json['data'][0]['id']); 

沒有相關,它必須是:

var_dump($json->data[0]->id);