编程语言
首页 > 编程语言> > php – Json_decode在Flickr API中不起作用

php – Json_decode在Flickr API中不起作用

作者:互联网

我有这个代码

$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()文档:

NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

这就解释了为什么你没有获得任何产出.

更新:

事实证明Flickr逃脱了单引号(‘),显然这是不允许的,并使JSON无效.你可以使用str_replace()来解决这个问题:

$flickrResponse = str_replace("\\'", "'", $Flickr);

此外,正如Flickr API documentation所说,您可以通过在URL中附加值为1的nojsoncallback参数来获取原始JSON,而不是使用普通的JSON,如下所示:

http://api.flickr.com/services/feeds/photos_public.gne?id=44545397@N03&lang=en-us&format=json&nojsoncallback=1

因此,通过这些更改,我们的代码应该正常工作:

$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,flickr
来源: https://codeday.me/bug/20190825/1719497.html