处理来自第3个Paty的无效Json回应

时间:2016-11-25 17:25:25

标签: php json api decode

在网站上工作并使用steams API返回其CSGO项目的用户广告资源

这是我点击的网址

$response = $this->guzzle->request('GET', "http://steamcommunity.com/profiles/{$communityId}/inventory/json/730/2");

所以在dev / local中,以下

一切正常
foreach (json_decode($response->getBody()->getContents(), true)['rgDescriptions'] as $item) {
        $inventory[$item['name']] = $item;
    }

return $inventory;

但是当我更新我的网站时,它抱怨我的foreach循环的无效参数 - 在var转储之后 - ($ response-> getBody() - > getContents()) - 仅在现场直播网站返回的json数据包含奇怪的时髦东西 - 我一般都是json的新手,但它包含以下内容

"""
00006000\r\n
{"success":true,"rgInventory":{"8161072596":{"id":"8161072596","classid":"1560432042","instanceid":"480085569","amount":"1","pos":1},"8159918836":

和结束块一样

{"internal_name":"normal","name":"Normal","category":"Quality","category_name":"Category"},{"internal_name":"Rarity_Ancient","name":"Extraordinary","category":"Rarity","color":"eb4b4b","category_name":"Quality"}]}},"more":false,"more_start":false}\r\n
00000000\r\n
\r\n
"""

所以这当然是我的foreach打破的原因,因为我的响应的json_decode将返回null而不是assoc数组? (见底部的全部功能!)

我很确定这些是换行符虽然我不确定?它相当烦人我不确定我是否遗漏了我自己的东西或蒸汽的反应,虽然我没看到当我在开发工作正常时它是怎么回事?

我也在研究中遇到了magic_quotes,但我读到他们在php 5.4中被折旧了?我正在运行5.6所以我只能认为必须有一些我缺少的服务器端?

这是我的帮助函数,以供参考

public function getCSGOInventory($communityId)
{
    $response = $this->guzzle->request('GET', "http://steamcommunity.com/profiles/{$communityId}/inventory/json/730/2");

    $inventory = [];
    foreach (json_decode($response->getBody()->getContents(), true)['rgDescriptions'] as $item) {
        $inventory[$item['name']] = $item;
    }

    return $inventory;
}

1 个答案:

答案 0 :(得分:1)

前一段时间我遇到了同样的问题。问题是你的json代码中的随机数如00000000和00006000。这看起来像Guzzle中的一个错误。我能够通过安装php-curl包修复它。尝试执行这样的apt-get来解决问题(如果你在像Ubuntu这样的操作系统上):

sudo apt-get install php-curl

您可以在此处找到更多相关信息: https://github.com/guzzle/guzzle/issues/1385