json问题回应,数组

时间:2012-06-29 23:23:44

标签: php json

我正在编写一个脚本,它将使用steam api,我选择使用json作为响应格式。 所以我使用了带有和不带jason_decode()的var_dump,看起来没问题。 但无法设法将其打印出来,或者回应它。

获取json数据的脚本

<?php
$id = $_GET['SteamId'];
$get = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=API_KEY_REMOVED_FOR_SECURITY&steamids=$id",true);
$data = json_decode($get);
//var_dump($data);
echo $data->realname;
?>

所以,我使用带有json_decode的var_dump就是这个。

object(stdClass)#1 (1) { ["response"]=> object(stdClass)#2 (1) { ["players"]=> array(1) { [0]=> object(stdClass)#3 (15) { ["steamid"]=> string(17) "76561198053511970" ["communityvisibilitystate"]=> int(3) ["profilestate"]=> int(1) ["personaname"]=> string(9) "Undefined" ["lastlogoff"]=> int(1340978067) ["profileurl"]=> string(41) "http://steamcommunity.com/id/Heisteknikk/" ["avatar"]=> string(114) "http://media.steampowered.com/steamcommunity/public/images/avatars/5c/5c75278da69102d9c8290bccd1becbb4081954cd.jpg" ["avatarmedium"]=> string(121) "http://media.steampowered.com/steamcommunity/public/images/avatars/5c/5c75278da69102d9c8290bccd1becbb4081954cd_medium.jpg" ["avatarfull"]=> string(119) "http://media.steampowered.com/steamcommunity/public/images/avatars/5c/5c75278da69102d9c8290bccd1becbb4081954cd_full.jpg" ["personastate"]=> int(1) ["realname"]=> string(7) "Andreas" ["primaryclanid"]=> string(18) "103582791430704052" ["timecreated"]=> int(1322427688) ["loccountrycode"]=> string(2) "NO" ["locstatecode"]=> string(2) "09" } } } }

来自json的原始数据。

{
    "response": {
        "players": [
            {
                "steamid": "76561198053511970",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "Undefined",
                "lastlogoff": 1340978067,
                "profileurl": "http:\/\/steamcommunity.com\/id\/Heisteknikk\/",
                "avatar": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/5c\/5c75278da69102d9c8290bccd1becbb4081954cd.jpg",
                "avatarmedium": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/5c\/5c75278da69102d9c8290bccd1becbb4081954cd_medium.jpg",
                "avatarfull": "http:\/\/media.steampowered.com\/steamcommunity\/public\/images\/avatars\/5c\/5c75278da69102d9c8290bccd1becbb4081954cd_full.jpg",
                "personastate": 1,
                "realname": "Andreas",
                "primaryclanid": "103582791430704052",
                "timecreated": 1322427688,
                "loccountrycode": "NO",
                "locstatecode": "09"
            }
        ]

    }
}

我一直在谷歌上搜索有关使用“echo $ data-&gt; realname;”打印json的信息。 所以我不知道我做错了什么,所以它无法回应数据。

1 个答案:

答案 0 :(得分:1)

简介

嘿,这是一个非常老的问题,但是由于这里没有答案。

在解码JSON时确实正确,PHP具有内置功能json_decode,可以轻松为您解码该功能:

$json = '{...}';
$obj = json_decode($json, [ASSOC_ARRAY = FALSE]);

您可以将第二个Param设置为bool,以关联数组,从而更改以下内容:

$obj->response;

收件人

$obj['response'];

响应

现在您说您需要玩家的realname,就像通过玩家在数组中的位置获取它,或者只是遍历数组一样简单:

echo $obj->response->players[0]->realname; // Andreas

或者如果您有多个用户:

for( $i = 0; $i < count($obj->response->players); $i++ ) {
  echo $obj->response->players[$i]->realname;
}

将显示所有realname

相关问题