PHP: проблема декодирования JSON - PullRequest
4 голосов
/ 22 июля 2010
<?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, но мне не удалось распечатать идентификатор.

Также я попытался:

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

Ответы [ 5 ]

4 голосов
/ 22 июля 2010

Обратите внимание, что в JSON есть массив.

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

Вы можете попробовать $obj = $obj->{'data'}[0], чтобы получить первый элемент в этом массиве.

3 голосов
/ 22 июля 2010

data - это массив, поэтому он должен быть:

print $obj[0]->{'id'};
3 голосов
/ 22 июля 2010

Похоже, ключ "data" - это массив объектов, поэтому он должен работать:

$obj = json_decode($json);
echo $obj->data[0]->name;
2 голосов
/ 22 июля 2010

Вы пробовали $obj->data или $obj->id?

Обновление: Другие отметили, что это должно быть $obj->data[0]->id и т. Д.

PS Возможно, вы не захотите размещать свои личные токены доступа в Facebook на общедоступном веб-сайте, таком как SO ...

1 голос
/ 22 июля 2010

Это немного сложнее, чем когда вы получаете ассоциативный массив из него:

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

Тогда вы можете повторить идентификатор с:

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

Без связи должно быть:

var_dump($json->data[0]->id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...