【问题标题】:Flickr JSON feedFlickr JSON 提要
【发布时间】:2014-11-18 18:53:52
【问题描述】:

我正在尝试从 Flickr 检索一些 json,并使用 foreach 循环来显示一些特定数据,就像我对美味和 twitter 所做的那样。 然而,它返回的 json 格式不同,它似乎不起作用,有什么想法吗?谢谢

jsonFlickrFeed({
        "title": "Recent Uploads tagged un",
        "link": "http://www.flickr.com/photos/tags/un/",
        "description": "",
        "modified": "2012-02-22T14:48:07Z",
        "generator": "http://www.flickr.com/",
        "items": [
       {
            "title": "PLAYA SOLITARIA",
            "link": "http://www.flickr.com/photos/lomar_alv/6920550211/",
            "media": {"m":"http://farm8.staticflickr.com/7040/6920550211_516eb7ae13_m.jpg"},
            "date_taken": "2009-08-25T18:34:25-08:00",
            "description":

【问题讨论】:

  • 格式不同它似乎不起作用是什么意思?
  • 那里有一大段代码。它是什么?我猜这是来自 Flickr 的一些 JSONP。你用什么代码来解析它?
  • 这是无效的 JSON。你必须放弃 jsonFlickrFeed( 东西。
  • 以防万一有人需要它,从 Flickr Feed jsfiddle.net/Braulio/vDr36 读取工作样本

标签: php json flickr


【解决方案1】:

你可以传递选项:

$options = array (
    'format' => 'json',
    'nojsoncallback' => 1
);

【讨论】:

  • 您的答案出现在低质量审核队列中。请编辑您的答案以包含说明为什么这可以解决问题。
  • 我刚刚遇到了这个答案......是的......根据这个链接,显然这是他们api中的一个选项:flickr.com/services/api/response.json.html
【解决方案2】:

这是我通常的做法

//Grab the feed
$json_feed = file_get_contents("http://www.WhateverTheFeedUrlIs.com");

//Decode it
$json_to_array = json_decode($json_feed);

//Print it out if you want
echo '<pre>';
print_r($json_to_array);
echo '</pre>';

//Grab specific info
echo $json_to_array->title;  //Recent Uploaded Tags
echo $json_to_array->url; //http://www.flickr.com....
echo $json_to_array->items[0]->title; //PLAYA SOLITARIA

【讨论】:

  • 这是我为其他站点所做的,但是在这种情况下,当使用 foreach 循环回显特定信息时,它会给出错误“为 foreach 提供的参数无效”,所以它不是数组?
  • 不是数组是什么意思?你不能foreach($json_to_array-&gt;items as $i) { echo $i-&gt;title;}???
  • 是的,这不起作用。还有一个错误说 $json_to_array->items 正在尝试获取非对象的属性
【解决方案3】:

我知道它已经过时了,但对于其他对此感到疑惑的人......请:

json_decode(ereg_replace("^jsonFlickrFeed\((.*)\)$", "\\1", stripslashes(strip_tags($STRING_YOU_GOT_BACK_FROM_FLICKR))));

这应该清理响应,以便 json_decode() 工作。另请注意,您可以在最后放置一个 true 以返回一个数组而不是使用 json_decode() 的对象。

实际上,这已被弃用。你只想用 preg_replace() 做一个类似的正则表达式。甚至:

$responseString = str_replace(array("\n", "\t"), '', $STRING_BACK_FROM_CURL);
$responseString = stripslashes(strip_tags($responseString));
preg_match('/^jsonFlickrFeed\((.*)\)/i', $responseString, $matches);
$flickrJson = $matches[1];
$flickrObject = json_decode($flickrJson);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2011-03-18
    • 2011-11-10
    • 2012-12-08
    • 2011-06-06
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多