3

因此,我正在通过 PHP 以 JSON 格式提取用户的推文流。我想将它解码为关联数组或至少一些更有用的方式而不是字符串,以便我可以通过它进行操作。

我一直在疯狂地阅读关于 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
4

4 回答 4

7

callbackURL 中,您会得到一个用括号括起来( )的字符串(字符串的摘录):

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

这不是有效的 JSON。

如果没有callback,则结果仅包含在[ ]其中有效的内容中:

 [{"in_reply_to_user_id":  /* ...more data here...*/ }]
于 2010-01-26T21:26:44.133 回答
4

放弃 &callback=? 在网址中。

于 2010-01-26T21:18:50.470 回答
3

我习惯于使用 jQuery 库解析 JSON,所以我有 &callback=? 在 URL 的末尾。

好像我取消了这个, json_decode() 将数据转换为数组没有问题。

如果有人知道为什么会这样,我很想知道。

长话短说,它有效!

于 2010-01-26T21:18:46.303 回答
3
   $url = "http://twitter.com/status/user_timeline/" . $username . ".json?count=" . $count;

删除回调,使您的 json 是 json 而不是 jsonp,jsonp 在解码时中断

于 2010-01-26T21:20:57.813 回答