我有这个代码
$feed_Flickr = 'http://api.flickr.com/services/feeds/photos_public.gne?id=44545397@N03&lang=en-us&format=json';
$Flickr = file_get_contents($feed_Flickr);
$Flickr = str_replace('jsonFlickrFeed(','',$Flickr);
$Flickr = str_replace('})','}',$Flickr);
$flickrvalue = json_decode($Flickr);
print_r($flickrvalue);
print_r 什么都不返回 代码有什么问题?
最佳答案
数据不是有效的 JSON,这就是 json_decode()
不起作用的原因。您可以尝试使用 jsonlint.com 等网站对其进行验证。
从 json_decode()
文档:
这就解释了为什么你没有得到任何输出。
更新:
事实证明,Flickr 转义了单引号( '
),显然这是不允许的,并使 JSON 无效。您可以使用 str_replace()
来解决这个问题:
$flickrResponse = str_replace("\\'", "'", $Flickr);
此外,正如 Flickr API documentation 所说,您可以通过将
nojsoncallback
参数和 1
的值附加到 URL 来获取原始 JSON,而不是使用普通的 JSON,如下所示:因此,通过这些更改,我们的代码应该可以正常工作:
$feed_Flickr = 'http://api.flickr.com/services/feeds/photos_public.gne?id=44545397@N03&lang=en-us&format=json&nojsoncallback=1';
$Flickr = file_get_contents($feed_Flickr);
$flickrResponse = str_replace("\\'", "'", $Flickr);
$results = json_decode($flickrResponse, true);
print_r($results);
Demo!
关于php - Json_decode 在 Flickr API 中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18829328/