Расшифровка JSON-ленты через PHP из Twitter не работает? - PullRequest
3 голосов
/ 27 января 2010

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

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

<code>$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 "
"; echo gettype ($ results); // это возвращает строку

Ответы [ 4 ]

7 голосов
/ 27 января 2010

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

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

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

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

 [{"in_reply_to_user_id":  /* ...more data here...*/ }]
4 голосов
/ 27 января 2010

Откажитесь от & callback =? в URL.

3 голосов
/ 27 января 2010
   $url = "http://twitter.com/status/user_timeline/" . $username . ".json?count=" . $count;

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

3 голосов
/ 27 января 2010

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

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

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

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

...