0

私は音楽ベースのアプリケーションを作成しています。iTunes API にアクセスして、クリックされたアルバムに基づいて動的に生成されるアルバムを購入するためのリンクを返そうとしています (これは正常に動作し、正しいリンクを生成します)。 JSON データ)。例のリンク

私が理解できないのは、JSON の「collectionViewUrl」キーへのアクセスです。これは、アルバム アートが選択された後に表示されるリンクの href として設定したいだけで、スコアリングされます。$topalbums[$i]['iTunes'] = ....

を使用json_decodeしてデータにアクセスしようとしましたが、必要なキーにアクセスしようとすると、戻り値がありません。これで簡単なものが欠けていますか?

==================================

(このセクションの現在のコード)

$iTunes_link_prefix = "https://itunes.apple.com/search?country=GB&media=music&entity=album&limit=1&artist=";

    for ($i = 0; $i < 6; $i++) {
        $topalbum[$i]['title'] = $xml['top_albums']->topalbums->album[$i]->name;
        $topalbum[$i]['image'] = $xml['top_albums']->topalbums->album[$i]->image[3];

        $json_link = $iTunes_link_prefix . $artist . "&term=" . urlencode($topalbum[$i]['title']);

        $topalbum[$i]['itunes'] = (Contents of the collectionViewUrl Key)

    }
4

3 に答える 3

0

このために、取得したjsonは、実際に操作する前に変換する必要があることに注意してください。あなたが示している例でわかるように、json コンテンツを取得するような何かを行う必要があります (curl を使用するか、方法がわからない)。

$itunesDisc = json_decode($jsonFromItunes);

次に、json の内容を取得します。iTunes が返すすべての json が response:[...] の形式である場合、簡単にするためにこれを行うことができます

$itunesDisc = $itunesDisc["response"];

その後、配列をウォークスルーできます。おそらく、このページは、json 応答http://jsonviewer.stack.hu/の内容を表示するのに役立ちます。

于 2013-04-18T17:35:18.680 に答える
0

簡単な解決策は、foreachコードを次のように変更するだけです。

for ($i = 0; $i < 6; $i++) {
    $topalbum[$i]['title'] = $xml['top_albums']->topalbums->album[$i]->name;
    $topalbum[$i]['image'] = $xml['top_albums']->topalbums->album[$i]->image[3];

    $json_link = "{$iTunes_link_prefix}{$artist}&term=" . urlencode($topalbum[$i]['title']);

    // Fetch the JSON data from iTunes - you can add some more verifications here
    // to make sure your app runs smooth if the request fails for some reason
    $itunes_json       = file_get_contents($json_link);
    $itunes_album_data = json_decode($itunes_json, true);

    // Access the URL from the 1st result if any
    if (!empty($itunes_album_data['results'][0]['collectionViewUrl'])) {
        $topalbum[$i]['itunes'] = $itunes_album_data['results'][0]['collectionViewUrl'];
    }
}
于 2013-04-18T17:37:27.427 に答える
0

動的に生成されたリンクの代わりに静的リンクを入力しようとした後、エラーは実際には JSON へのリンクの生成にあることがわかりました。$artist変数を実行する必要がありましたurlencode()。以下は、このセクションの最終的なコードです。ご協力ありがとうございます。

for ($i = 0; $i < 6; $i++) {
        $topalbum[$i]['title'] = $xml['top_albums']->topalbums->album[$i]->name;
        $topalbum[$i]['image'] = $xml['top_albums']->topalbums->album[$i]->image[3];

        $json_link = $iTunes_link_prefix . urlencode($artist) . "&term=" . urlencode($topalbum[$i]['title']);
        $itunes_json       = file_get_contents($json_link);
        $itunes_album_data = json_decode($itunes_json);

        if (!empty($itunes_album_data->results[0]->collectionViewUrl)) {
            $topalbum[$i]['itunes'] = $itunes_album_data->results[0]->collectionViewUrl;
        }
    }
于 2013-04-18T18:24:26.817 に答える