Декодирование JSON-канала через PHP из Twitter не работает?

StackOverflow https://stackoverflow.com/questions/2142676

  •  22-09-2019
  •  | 
  •  

Вопрос

Итак, я удаляю твит пользователя steam в формате JSON с помощью PHP.Я бы хотел декодировать его в ассоциативный массив или, по крайней мере, каким-нибудь более удобным способом, а не в виде строки, чтобы я мог маневрировать по нему.

Я как сумасшедший читал о json_decode, но мне кажется, что когда я использую его до и после, содержимое файла все еще определяется как одна длинная строка.Кто-нибудь может помочь мне понять, что я делаю не так?

$url = "http://twitter.com/status/user_timeline/" . $username . ".json?count=" . $count . "&callback=?";    

// $url becomes "http://twitter.com/status/user_timeline/steph_Rose.json?count=5&callback=?";   
        $contents = file_get_contents($url);
        $results = json_decode($contents, true);

        echo "<pre>";
        print_r($results);
        echo "</pre>";

        echo gettype($results); // this returns string
Это было полезно?

Решение

С callback в URL-адресе вы получаете обратно строку, заключенную в круглые скобки ( ) (отрывок из строки):

([{"in_reply_to_user_id":  /* ...more data here...*/ }]);

Это недопустимый JSON.

Без callback, результат завернут только в [ ] который является действительным:

 [{"in_reply_to_user_id":  /* ...more data here...*/ }]

Другие советы

Отказаться от &обратного вызова=?в URL-адресе.

Я привык разбирать JSON с помощью библиотеки jQuery, поэтому у меня был &обратный вызов=?в конце URL-адреса.

Кажется, как будто я снимаю это, что у json_decode() нет проблем с преобразованием данных в массив.

Если кто-нибудь знает причину, по которой это могло бы быть, я хотел бы знать.

Короче говоря, это работает!!

   $url = "http://twitter.com/status/user_timeline/" . $username . ".json?count=" . $count;

удалите обратный вызов, чтобы ваш json был json, а не jsonp, jsonp прерывается при декодировании

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top