我如何使用PHP访问此Json

时间:2017-12-08 22:54:56

标签: php json

我在尝试获取此json的内容时遇到问题,我正在使用php。

{"song":{"returncode":"200","returnmsg":"OK","title":"Despacito Ft. Justin Bieber","artist":"Luis Fonsi, Daddy Yankee","album":"","size":"9193600","url":"http://sami-server.info/Bita6/04.96/Billboard%20Hot%20100%20Singles/Billboard%20Hot%20100%20Singles/01.%20Luis%20Fonsi%2C%20Daddy%20Yankee%20-%20Despacito%20ft.%20Justin%20Bieber.mp3","time":"1499079781","date":"Jul 3, 2017","source":"","active":"1","albumart":"https://images-na.ssl-images-amazon.com/images/I/5150NxehQtL._AC_US160_.jpg","speed":"21","counter":"850850"}

这是我的函数,返回json

public function getSong($id) {
        $song_url = 'http://databrainz.com/api/data_api_new.cgi?jsoncallback=&id='.$id.'&r=mpl&format=json&_=';
        $api = Api::getSpotOn($song_url);
        $song = $api->{'song'};
         return $song;
    }

我希望得到所有内容。

谢谢!

2 个答案:

答案 0 :(得分:1)

在json示例中,您提供了一个最后的'}',并且json_decode将返回Null,因为它不是有效的json。

但是,因为你有getSong方法,所以应该有以下工作:

$retObject = json_decode(getSong($songId));
$song = $retObject->song;

print_r($song);

echo 'returncode:'.$song->returncode.'<br/>';
echo 'returnmsg:'.$song->returnmsg.'<br/>';
echo 'title:'.$song->title.'<br/>';
echo 'artist:'.$song->artist.'<br/>';
echo 'album:'.$song->album.'<br/>';
echo 'size:'.$song->size.'<br/>';
echo 'url:'.$song->url.'<br/>';
echo 'time:'.$song->time.'<br/>';
echo 'date:'.$song->date.'<br/>';
echo 'source:'.$song->source.'<br/>';
echo 'active:'.$song->active.'<br/>';
echo 'albumart:'.$song->albumart.'<br/>';
echo 'speed:'.$song->speed.'<br/>';
echo 'counter:'.$song->counter.'<br/>';

答案 1 :(得分:1)

尝试以下方法:

$result = json_decode(
'{
    "song": {
        "returncode": "200",
        "returnmsg": "OK",
        "title": "Despacito Ft. Justin Bieber",
        "artist": "Luis Fonsi, Daddy Yankee",
        "album": "",
        "size": "9193600",
        "url": "http://sami-server.info/Bita6/04.96/Billboard%20Hot%20100%20Singles/Billboard%20Hot%20100%20Singles/01.%20Luis%20Fonsi%2C%20Daddy%20Yankee%20-%20Despacito%20ft.%20Justin%20Bieber.mp3",
        "time": "1499079781",
        "date": "Jul 3, 2017",
        "source": "",
        "active": "1",
        "albumart": "https://images-na.ssl-images-amazon.com/images/I/5150NxehQtL._AC_US160_.jpg",
        "speed": "21",
        "counter": "850850"
    }
}'
);

var_dump($result);

echo $result->song->title;