2013-09-11 3 views
0

Я использую API last.fm для получения последних треков пользователя и возвращает либо строку JSON, либо XML-документ.Echo JSON/XML в PHP

XML format

JSON format

Какой я должен использовать? и я хочу, чтобы имена треков отображались с помощью PHP, как мне это сделать?

Большое спасибо!

+1

на основе первичного мнения, используйте 'json_decode' или SimpleXML расширение. Оба возвращают объект, из которого вы можете получить имена дорожек. –

+0

Глядя на JSON, это выглядит как '['recenttracks'] ['track'] [#] ['name']' где '#' зацикливается. –

ответ

0

Я предпочитаю JSon

1- Используя file_get_contents вы можете получить JSON.

2- Decode Json с использованием json_decode

3- Используйте foreach, чтобы получить значение, которое вы хотите

$json_string = file_get_contents('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=rj&limit=5&api_key=cf9021419b97b1e4611d580e6304e5be&format=json'); 
$parsed_json = json_decode($json_string); 

if (is_array($parsed_json) && !empty($parsed_json)) { 
    //check if is array and not null 
    $track = $parsed_json->recenttracks->track; 

    foreach ($track as $key) { 
    echo $key->name . '<br>'; 
    } 
} else { 
    echo 'No data available'; 
} 

Выход:

Booty Swing - Оригинальный

Социальный Ноу Как

Глядя на Солнце

Gett Off

Боясь стрелять Чужие

0

В основном, зависит от того, используете ли вы уже очень хороший синтаксический анализатор xml или нет, и вам удобнее с xml, чем json. Но с точки зрения третьего лица будет очень просто использовать представление JSON с функцией «json_decode» в php, которая даст вам прямо объект, который эквивалентен представлению json.

По моему мнению, использование JSON с json_decode будет самым простым решением. Для получения дополнительной информации ознакомьтесь PHP Manual http://php.net/manual/en/function.json-decode.php

0

Вы должны использовать JSON просто, как,

$jsonArr=json_decode($yourjson,true); 
if(isset($jsonArr['recenttracks']['track']) and !empty($jsonArr['recenttracks']['track'])) 
{ 
    foreach($jsonArr['recenttracks']['track'] as $track){ 
     echo $track['name'].'<br/>';; 
    } 
}