1

JSON 形式を使用して Steam Web API をいじっています。APIによって提供された配列出力を印刷しようとしています。

<?php
    $id = $_GET['id'];
    $key = 'xxx';

    $link = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $id . '&format=json');
    $profile_info = json_decode($link);

    $json_response = json_encode($profile_info->response);
    print($json_response['steamid']);
?>

キーは明らかに、Steam のジェネレーターから提供されたキーに置き換えられます。しかし、私が持っているこのコード スニペットは、返す{べき文字のみを返します76561197989628470。これは私の steamid です。

これらはJSON形式の配列です

{

   "response": {

      "players": [

         {

            "steamid": "76561197989628470",

            "communityvisibilitystate": 3,

            "profilestate": 1,

            "personaname": "Archey",

            "lastlogoff": 1334719151,

            "commentpermission": 1,

            "profileurl": "http://steamcommunity.com/id/Archey6/",

            "avatar": "http://media.steampowered.com/steamcommunity/public/images/avatars/74/745b633a08937a5cf52bb44c2bdd3552f85455d7.jpg",

            "avatarmedium": "http://media.steampowered.com/steamcommunity/public/images/avatars/74/745b633a08937a5cf52bb44c2bdd3552f85455d7_medium.jpg",

            "avatarfull": "http://media.steampowered.com/steamcommunity/public/images/avatars/74/745b633a08937a5cf52bb44c2bdd3552f85455d7_full.jpg",

            "personastate": 1,

            "primaryclanid": "103582791432066081",

            "timecreated": 1177637717,

            "loccountrycode": "CA",

            "locstatecode": "SK"

         }

      ]

   }
4

1 に答える 1

3

なぜjsonをデコードしてからエンコードするのですか?

<?php
    $id = $_GET['id'];
    $key = 'xxx';

    $link = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $id . '&format=json');
    $myarray = json_decode($link, true);

    print $myarray['response']['players'][0]['steamid'];
?>

または、本当に再度エンコードする必要がある場合:

<?php
    $id = $_GET['id'];
    $key = 'xxx';

    $link = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $id . '&format=json');
    $profile_info = json_decode($link);

    $json_response = json_encode($profile_info->response->players);
    $decoded = json_decode($json_response, true);
    print $json_response['steamid'];
?>
于 2012-04-19T03:11:31.557 に答える