从API json响应中访问数据。阵列? Laravel

时间:2015-08-04 07:42:56

标签: json laravel laravel-5.1

我正在尝试访问API返回的steamid响应中的json数据,特别是Steam API。

回复如下:

enter image description here

我已经让它返回json,但为什么我会看到array到处都是?

我如何访问steamid数据?我有点困惑,因为我认为这将是json。

我正在使用guzzle获取数据并使用guzzle json()方法将其转换为json:

enter image description here

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 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();