您好我正在尝试连接到Twitter以读取状态。 我可以发布它们就好了。
我被困了因为我收到的回复不是json而是php对象。
我正在使用codebird库进行连接
\Codebird\Codebird::setConsumerKey($key, $secret);
$cb = \Codebird\Codebird::getInstance();
$cb->setToken($token, $tokenSecret);
$reply = $cb->statuses_homeTimeline();
我得到的数据不像我期望的那样是JSON。它是一个对象
var_dump($reply);
给出
object(stdClass)#383 (22) { [0]=> object(stdClass)#2 (26) { ["created_at"]=> string(30) "Fri Jan 08 16:36:03 +0000 2016" ["id"]=> string(18) "685500222852710401" ["id_str"]=> string(18) "685500222852710401" ["text"]=> string(142) "Check out the views from up here! Francesco Di Tommaso looks like he knows the best place for a good photo – sa...
和
json_decode($reply);
给出
Warning: json_decode() expects parameter 1 to be string,
我之前在python和c#中都使用过twitter api但从未遇到过这样的事情。
EDIT 文档说要转换为数组,其结果是
array(22) { [0]=> object(stdClass)#2 (26) { ["created_at"]=> string(30) "Fri Jan 08 17:20:00 +0000 2016" ["id"]=> string(18) "685511281630035968" ["id_str"]=> string(18) "685511281630035968" ["text"]=> string(129) "RT @ColumbiaRecords: We've got that #FridayFeeling listening to @wet's new track #AllTheWays on @Spotify! https://t.co/zLTCUJZ03X" ["source"]=> string(83) "TweetDeck" ["truncated"]=> bool(false) ["in_reply_to_status_id"]=> NULL ["in_reply_to_status_id_str"]=> NULL ["in_reply_to_user_id"]=> NULL ["in_reply_to_user_id_str"]=> NULL ["in_reply_to_screen_name"]=> NULL ["user"]=> object(stdClass)#3 (41) { ["id"]=> int(34442404) ["id_str"]=> string(8) "34442404" ["name"]=> string(4) "Sony" ["screen_name"]=> string(4) "Sony" ["location"]=> string(12) "New York, NY" ["description"]=> string(59) "The official Twitter account for Sony in the United States."...
我仍然无法转换为Json。
如果我的问题听起来很傻,请原谅我,我对PHP很新。
答案 0 :(得分:2)
Codebird正在返回一个php对象,而不是一个json字符串。与您的案例特别相关的是Codebird documentation在其“返回格式”部分中说明的内容:
API调用的默认返回格式是PHP对象。对于返回多个数据的API方法(如status / home_timeline),您应该将回复转换为数组,如下所示:
$reply = $cb->statuses_homeTimeline(); $data = (array) $reply;