PHP:JSON解码问题

时间:2010-07-22 12:15:01

标签: php json

<?php
$handle = fopen("https://graph.facebook.com/search?q=sinanoezcan@hotmail.com&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"}]}

它回应了JSON,但我无法打印id。

我也试过了:

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

5 个答案:

答案 0 :(得分:4)

请注意,JSON中有一个数组。

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

您可以尝试$obj = $obj->{'data'}[0]获取该数组中的第一个元素。

答案 1 :(得分:3)

看起来键"data"是一个对象数组,所以这应该有效:

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

答案 2 :(得分:3)

data是一个数组,所以它应该是:

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

答案 3 :(得分:2)

您是否尝试过$obj->data$obj->id

更新:其他人已注意到它应为$obj->data[0]->id,依此类推。

PS您可能不希望在SO ...等公共网站上包含您的私人Facebook访问令牌。

答案 4 :(得分:1)

当你从中得到一个关联数组时,它会比这复杂一点:

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

然后你可以回复id:

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

没有assoc,它必须是:

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