我使用wordpress函数wp_remote_get从twitter获取json数据,如下所示:
$response = wp_remote_get('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=twitter');
$json = json_decode($response['body']);
它工作正常。但是,如果twitter返回一些错误,它会在我的页面上完全产生问题。在这种情况下,我的页面上的内容不会在该错误部分后加载。那么,只有在没有错误的情况下,我怎样才能捕获错误并继续。
例如,如果推特限制超过,则会返回以下回复:
{"request":"\/1\/statuses\/user_timeline.json?screen_name=twitter","error":"Rate limit exceeded. Clients may not make more than 150 requests per hour."}
从上面的响应,我怎么能得到错误。 我正在尝试关注,但它不起作用(我的页面根本没有加载)
if (!isset($json['error']){
//continue
}
答案 0 :(得分:6)
它不起作用,因为您尝试将$json
作为数组访问,而不是。这是一个对象,所以请使用:
if (!isset($json->error){
//continue
}
您的页面未加载,因为它导致致命错误,从而产生500内部服务器错误。如果您查看错误日志,您会发现:
致命错误:不能在...中使用stdClass类型的对象作为数组
答案 1 :(得分:1)
您需要使用json_decode来“转换”对象中的“json字符串”。
$j = json_decode($json);
echo $j->{'error'}
在这里,您将找到有关json_decode的所有信息:http://php.net/manual/en/function.json-decode.php