php - Json_decode 在 Flickr API 中不起作用

标签 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 什么都不返回代码有什么问题?

最佳答案

数据不是有效的 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说,而不是使用普通的 JSON,您可以通过将值为 1nojsoncallback 参数附加到 URL 来获取原始 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_decode 在 Flickr API 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18829328/

相关文章:

php - 检测换行符

php - 你能 "compile"PHP 代码并上传一个二进制文件,它只会由字节码解释器运行吗?

JavaScript:解码 PHP json_encode 响应

iphone - 如何在 xcode 上使用 FLICKR API 显示当前位置的图像?

PHP div 每 12 个图像

c - 如何将库添加到 PKG-CONFIG Mac

php_admin_value disable_functions 不工作

json - 从Elasticsearch返回单个聚合值

mysql - json_unquote 和 extract 给出 null

php - 在 Symfony 中输入提示 json 对象