2013-08-17 2 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-анализа, но ничего не получается. Спасибо.

[EDIT]: выше JSON отрывок из большого RSS JSON feed.I удалось разобрать JSON uptill этот узел миниатюр следующим образом:

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

где $ decoded_json является объект, полученный после применения функции json_decode() в корневом каталоге json-файла. Теперь, как пройти мимо этого thumbnail?

+3

'$ вар = 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 слишком велик, вы можете ударить предел рекурсии. По умолчанию 512 в 5.3, 128 в 5.2.3 и 20 в предыдущих версиях. Вы можете установить глубину рекурсии в качестве третьего аргумента

json_decode($JsonString,false,1024); 

Второй аргумент является булевой, верно, если вы хотите ассоциативный массив сделал, ложь (по умолчанию), если вместо этого вы хотите объект StdClass.

[EDIT]

пройти миниатюру вы $decoded_json->query->results->item->thumbnail[0]->url, так как миниатюра массив только доступ к нему как таковой. Более чем вероятно, вы хотите, чтобы петля над ним, как

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

Ваша отредактированная часть содержит решение. Большое спасибо :) –

Смежные вопросы