2013-08-17 31 views
2

誰能告訴我,怎麼只有從「縮略圖」的第一個孩子獲取URL元素這個奇怪的JSON。這裏是JSON:解析使用PHP

"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 feed.I的摘錄設法解析JSON uptill這個縮略圖節點如下:

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

其中$ decoded_json是在對json文件的根目錄應用json_decode()函數後獲得的對象。現在如何繼續執行這個thumbnail部分?

+3

'$ var = json_decode($ your_json); echo $ var ['thumbnail'] [0] ['url'];' –

+0

其實這是一個大json文件的內部部分。樹是這樣的: $ decoded_json-> query-> results-> item- > thumbnail –

+1

@cale_b應該是'$ var ['thumbnail'] [0] - > url',除非你傳遞了'true'作爲第二個參數,它告訴它創建一個關聯數組而不是stdClass。 –

回答

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。如果想取得關聯數組,false(默認)如果代替要一個stdClass的對象可以設置遞歸深度作爲第三個參數

json_decode($JsonString,false,1024); 

第二個參數是一個布爾值,真實。

[編輯]

晃過縮略圖你做$decoded_json->query->results->item->thumbnail[0]->url因爲縮略圖是一個數組,只是訪問它本身。 很可能你會想循環它,就像

foreach($decoded_json->query->results->item->thumbnail as $thumbnail) { 
    echo $thumbnail->url; 
} 
+0

您編輯的部分包含解決方案。非常感謝您:) –