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!

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...