我正在尝试访问API返回的steamid
响应中的json
数据,特别是Steam API。
回复如下:
我已经让它返回json,但为什么我会看到array
到处都是?
我如何访问steamid
数据?我有点困惑,因为我认为这将是json。
我正在使用guzzle
获取数据并使用guzzle json()
方法将其转换为json:
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:1)
API确实使用JSON发送/接收,但是JSON只是一个字符串,所以为了使用该数据,PHP必须解析它,这是由guzzle自动处理的,所以只要你得到数据就可以了已自动将数据解码为可用的格式。
它使用json_encode()
和json_decode()
函数执行此操作。
您可以使用以下内容访问steamid
。
// Assuming $data is your response from the API.
$players = array_get($data, 'response.players', []);
foreach($players as $player)
{
$steamId = array_get($player, 'steamid', null);
}
使用laravel helper array_get()
函数是一种很好的方法,可以确保在数据不存在时返回合理的默认值,并且无需继续执行isset()
之类的操作以避免错误关于未定义的索引等http://laravel.com/docs/5.1/helpers
另外,不使用laravel助手你可以使用类似下面的东西,虽然我建议你添加检查以避免上述问题。
foreach($data['response']['players'] as $player)
{
$steamId = $player['steamid'];
}
如果您不希望guzzle自动解码API的JSON,我相信您应该只能调用getBody()
方法来返回JSON字符串。
$json = $response->getBody();