2

谁能告诉我如何仅从“thumbnail”的第一个子项中检索 URL 元素。这是 json:

"thumbnail": [
      {
       "height": "49",
       "url": "http://news.bbcimg.co.uk/media/images/69340000/jpg/_69340597_8hxs1hvy.jpg",
       "width": "66"
      },
      {
       "height": "81",
       "url": "http://news.bbcimg.co.uk/media/images/69340000/jpg/_69340598_8hxs1hvy.jpg",
       "width": "144"
      }
     ]

请帮忙,我已经尝试了从 stdClass 到 JSON 解析的所有方法,但似乎没有任何效果。谢谢。

[编辑]:上面的 json 是一个大 json rss 提要的摘录。我已经成功地解析了 json 直到这个缩略图节点,如下所示:

$decoded_json->query->results->item->thumbnail

其中 $decoded_json 是在 json 文件的根上应用json_decode()函数后获得的对象。现在如何继续这thumbnail部分?

4

1 回答 1

2

利用json_decode

$JsonObj = json_decode($JsonString);
if( $JsonObj === NULL ) {
   echo "Malformed JSON string or Recursion limit reached";
}
print $JsonObj[0]->url;

如果 json 文件太大,您可能会达到递归限制。在 5.3 中默认为 512,在 5.2.3 中默认为 128,在之前的版本中默认为 20。您可以将递归深度设置为第三个参数

json_decode($JsonString,false,1024);

第二个参数是一个布尔值,如果你想要一个关联数组,则为 true,如果你想要一个 stdClass 对象,则为 false(默认)。

[编辑]

要跳过缩略图,$decoded_json->query->results->item->thumbnail[0]->url因为 thumbnail 是一个数组,因此只需访问它即可。您很可能会想像这样循环遍历它

foreach($decoded_json->query->results->item->thumbnail as $thumbnail) {
   echo $thumbnail->url;
}
于 2013-08-17T20:41:39.923 回答