php
  • json
  • 2011-03-20 67 views 2 likes 
    2

    我試圖使用JSON解碼來獲取youtube API提要。然而,當我粘貼http://www.jsonlint.com/ JSON結果我發現像php youtube json decode

    "media$group": { 
        "media$category": [ 
    

    不幸的是一些符號是由PHP拒絕。這是我的代碼,我試圖刪除這個$符號,但也許不成功。我該如何解決這個問題?

    $url = 'http://gdata.youtube.com/feeds/api/videosq=football&orderby=published&v=2&alt=json'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
    $body1 = curl_exec($ch); 
    $body = str_replace('$','', $body1); 
    curl_close($ch); 
    $data = json_decode($body); 
    foreach ($data->feed->entry as $result) { 
    ... 
    } 
    
    +2

    'json_decode'不受字符串中的'$'的影響。你意識到顯示的URL給出了一個'無效的請求URI'錯誤? – mario 2011-03-20 19:16:34

    +0

    @mario,我想獲得mediadescription。如果我忽略'$',使用'echo $ result-> mediagroup-> mediadescription;'它回調'可捕獲的致命錯誤:類stdClass的對象無法轉換爲字符串...' – 2011-03-20 19:22:54

    回答

    7

    你的問題是使用PHP標識符來訪問內容。這裏最簡單的解決辦法是將得到一個數組,而不是一個對象:

    $data = json_decode ($json , $assoc = true); 
    

    這允許訪問域:

    echo $result['media$group']['media$description']; 
    

    如果你想保留對象的語法,這可能與此雜牌:

    echo $result->{'media$group'}->{'media$category'}; 
    

    (但數組是安全的在這裏你沒有得到一個致命的錯誤應格式變化和屬性不存在。)

    0

    這項工作:

    <?php 
    $url = 'http://gdata.youtube.com/feeds/api/videos?q=football&orderby=published&v=2&alt=json'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
    $body1 = curl_exec($ch); 
    $body = str_replace('$','', $body1); 
    curl_close($ch); 
    $data = json_decode($body); 
    
    foreach ($data->feed->entry as $result) { 
        var_dump($result); 
    } 
    ?> 
    
    相關問題