2012-09-04 4 views
1

나는 cURL을 사용하여 디코딩 할 필요가있는 json-feed를 가지고 있습니다.PHP 디코딩 이상한 json-feed

"count":836, 
"value":{ 
"title":"AW-rss", 
"description":"Pipes Output", 
"link":"http:\/\/pipes.yahoo.com\/pipes\/pipe.info?_id=566903fd393811762dc74aadc701badd", 
"pubDate":"Tue, 04 Sep 2012 16:33:30 +0000", 
"generator":"http:\/\/pipes.yahoo.com\/pipes\/", 
"callback":"", 
"items":[ 
{ 
"title":"Title", 
"description":"Description", 
"link":"http://", 
"category":"Category", 
"pubDate":null, 
"guid":"14917809", 
"author":"Author", 
"y:published":null, 
"y:id":{ 
"permalink":"false", 
"value":"14917809" 
}, 
"y:title":"title" 
}, 
//and then it continues like that with several more items. 

이것은 내가 사용하고있는 코드이지만, 내 인생에서 foreach-loop를 통해 실질적인 것을 제공 할 수는 없습니다.

$query = 'http://pipes.yahoo.com/pipes/pipe.run?_id=566903fd393811762dc74aadc701badd&_render=json'; 

    $ch = curl_init(); // open curl session 

    // set curl options 
    curl_setopt($ch, CURLOPT_URL, $query); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    $result = curl_exec($ch); // execute curl session 
    $data = json_decode($result); 
    curl_close($ch); // close curl session 



    **foreach($data['items'] as $item) { 
     $guid['guid']}** 

피드에서 피드의 GUID를 얻으려고합니다. 어떤 도움이라도 대단히 감사 할 것입니다.

var_dump ($ data); 준다 :

object(stdClass)#1 (2) { ["count"]=> int(836) ["value"]=> object(stdClass)#2 (7) { ["title"]=> string(6) "AW-rss" ["description"]=> string(12) "Pipes Output" ["link"]=> string(75) "http://pipes.yahoo.com/pipes/pipe.info?_id=566903fd393811762dc74aadc701badd" ["pubDate"]=> string(31) "Tue, 04 Sep 2012 20:34:56 +0000" ["generator"]=> string(29) "http://pipes.yahoo.com/pipes/" ["callback"]=> string(0) "" ["items"]=> array(836) { [0]=> object(stdClass)#3 (10) { ["title"]=> string(68) "Noggrann chefsassistent till välkänt företag i centrala Stockholm" ["description"]=> string(163) "Har du tidigare erfarenhet av arbete som VD-assistent och önskar bli en del av ett av Sveriges största företag? Då är du den som vi söker, ansök redan idag!" ["link"]=> string(122) "http://www.academicwork.se/jobbannons/noggrann-chefsassistent-till-valkant-foretag-i-centrala-stockholm/stockholm/14917809" ["category"]=> string(16) "Assistent- enkel" ["pubDate"]=> NULL ["guid"]=> string(8) "14917809" ["author"]=> string(13) "Academic Work" ["y:published"]=> NULL ["y:id"]=> object(stdClass)#4 (2) { ["permalink"]=> string(5) "false" ["value"]=> string(8) "14917809" } ["y:title"]=> string(68) "Noggrann chefsassistent till välkänt företag i centrala Stockholm" } [1]=> object(stdClass)#5 (10) 

등등.

+0

'$ datas'는'$ data'가 아니며'$ guid [ 'guid']'줄의 내용은 무엇입니까? – Musa

+1

'var_dump ($ data); ' – zerkms

+0

예, 미안하지만 오타였습니다. 그것은 $ data입니다. $ guid [ 'guid']는 json의 모든 항목에 대한 "guid"를 얻는 것입니다. 그러나 나는 그것을 배열 또는 무언가에 넣을 것입니다. 문제는 루프가 작동하지 않는다는 것입니다 ... 그리고 var_dump ($ data)로 편집했습니다. –

답변

2

json_decode는 객체를 반환하므로 일반 배열과 약간 다르게 처리해야합니다.

$data = json_decode($result); 

$items = $data->{'value'}->{'items'}; 
$GUID = array(); 
foreach($items as $obj) 
{ 
    $GUID[] = $obj->{'guid'}; 
} 

var_dump($GUID); 

은 그게 도움이 될 경우 json_decode 방법은 배열 (json_decode ($ 결과, TRUE))로 수익을 변환 할 수 있습니다 것입니다. 이렇게 :

$data = json_decode($result,true); 

$items = $data['value']['items']; 
$GUID = array(); 
foreach($items as $obj) 
{ 
    $GUID[] = $obj['title']; 
} 

var_dump($GUID); 
+0

나는 당신을 사랑합니다. 아니, 너를 사랑해. 나는 이것이 어리석은 질문이다라고 말할 수 있었다. 그러나 나는 단지 json-feeds 주위에 나의 머리를 감쌀 수 없다. 그것은 나의 크립토나이트와 같다. 대단히 감사합니다! –