所以我用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
答案 0 :(得分:7)
在网址中使用callback
,您会得到一个包含在括号(
)
中的字符串(字符串的摘录):
([{"in_reply_to_user_id": /* ...more data here...*/ }]);
这是无效的JSON。
如果没有callback
,则结果仅包含在有效的[
]
中:
[{"in_reply_to_user_id": /* ...more data here...*/ }]
答案 1 :(得分:4)
抛弃&amp;回调=?在网址中。
答案 2 :(得分:3)
我习惯使用jQuery库解析JSON,所以我有&amp; callback =?在URL的末尾。
好像我把它关掉了,json_decode()在将数据转换成数组时没有问题。
如果有人知道为什么会这样,我很想知道。
长话短说,它有效!!
答案 3 :(得分:3)
$url = "http://twitter.com/status/user_timeline/" . $username . ".json?count=" . $count;
删除回调,这样你的json就是json而不是jsonp,jsonp在解码时中断