Glo*_*alz 14 php json curl flickr
我试图在我的PHP代码中解码从flickr返回的json字符串.我使用CURL但它仍然返回一个字符串,即使我在json sring变量周围包装json_decode().有任何想法吗?
$api_key = '####';
$photoset_id = '###';
$query = 'http://api.flickr.com/services/rest/?&method=flickr.photosets.getPhotos&api_key='.$api_key.'&photoset_id='.$photoset_id.'&extras=url_o,url_t&format=json&jsoncallback=1';
$ch = curl_init(); // open curl session
// set curl options
curl_setopt($ch, CURLOPT_URL, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch); // execute curl session
curl_close($ch); // close curl session
var_dump(json_decode($data));
Run Code Online (Sandbox Code Playgroud)
xma*_*cos 47
您的请求网址以:
&format=json&jsoncallback=1';
Run Code Online (Sandbox Code Playgroud)
参数的正确名称是nojsoncallback,因此您应该使用的正确URL如下所示:
&format=json&nojsoncallback=1';
Run Code Online (Sandbox Code Playgroud)
改变它,它应该工作.
问候.
Jac*_*kin 17
那是因为返回的数据不是有效的JSON.它的有效JavaScript.返回的数据包含在一个名为的默认回调函数中jsonFlickrApi
.
你需要摆脱JSON回调,它将JSON包装在一个回调函数中,然后该函数应该在客户端执行.您需要对返回的JSON执行一些字符串操作以删除默认回调jsonFlickrApi
,然后将其传递给json_decode
$api_key = '####';
$photoset_id = '###';
$query = 'http://api.flickr.com/services/rest/?&method=flickr.photosets.getPhotos&api_key='.$api_key.'&photoset_id='.$photoset_id.'&extras=url_o,url_t&format=json';
$ch = curl_init(); // open curl session
// set curl options
curl_setopt($ch, CURLOPT_URL, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch); // execute curl session
curl_close($ch); // close curl session
$data = str_replace( 'jsonFlickrApi(', '', $data );
$data = substr( $data, 0, strlen( $data ) - 1 ); //strip out last paren
$object = json_decode( $data ); // stdClass object
var_dump( $object );
Run Code Online (Sandbox Code Playgroud)