Json_decode在Flickr API中不起作用

时间:2013-09-16 13:31:40

标签: php json flickr

我有这段代码

$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什么都没有返回错误代码?

2 个答案:

答案 0 :(得分:6)

数据无效JSON,这就是json_decode()无效的原因。您可以尝试使用jsonlint.com等网站进行验证。

来自json_decode()文档:

  

如果无法解码json或者编码数据的深度超过递归限制,则返回NULL。

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

<强>更新

事实证明Flickr转义单引号('),显然这是不允许的,并使JSON无效。您可以使用str_replace()解决此问题:

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

另外,正如Flickr API documentation所说的那样,您可以通过将nojsoncallback参数的值1附加到网址来获取原始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!

答案 1 :(得分:0)

你拼错了变量!

<强> Flickrn!

 $Flickr = str_replace('})','}',$Flickrn);