Php Guzzle HTTP,无法解析对JSON的响应

Php Guzzle HTTP,无法解析对JSON的响应,php,guzzle6,Php,Guzzle6,所以我正在集成一个来自第三方公司的API,我面临着这种奇怪的情况 我使用以下代码获取端点 $client = $this->client = new Client([ 'base_uri' => 'https://xxx.xxxxxxxxxx.com/api/', 'timeout' => 15 ]); $this->requestConfig = [ 'auth' => [ 'xxxx@xx.xxx', '

所以我正在集成一个来自第三方公司的API,我面临着这种奇怪的情况

我使用以下代码获取端点

$client = $this->client = new Client([
    'base_uri' => 'https://xxx.xxxxxxxxxx.com/api/',
    'timeout' => 15
]);

$this->requestConfig = [
    'auth' => [
        'xxxx@xx.xxx',
        'xxxxx'
    ],
    'headers' => [
        'cache-control' => 'no-cache',
        'content-type' => 'application/x-www-form-urlencoded'
    ],

];

$response = $this->client->get($url, $this->requestConfig);

$content = $response->getBody()->getContents();
现在有趣的是,如果我把我得到的内容变为垃圾:

string(66) ""[{\"ExternalId\":\"38\",\"AgencyReference\":\"45436070356676\"}]""
现在我知道这个响应不好,响应类型如果没有设置json,json是URL编码的,所有东西都很难闻

我尝试解析这个字符串已有一段时间了

urldecode也不起作用

问题很简单,给出这样的回答,我怎么才能得到一个正规数组

目前正在使用PHP 7.1,因此最终发现:

来解决我的问题

在本例中,是转义的引号导致json格式错误。我的最终代码如下所示

$response = $response->getBody()->getContents();
$clean = stripslashes($response);
$clean = substr($clean, 1, -1);

dd(json_decode($clean));
请不要这样写你的API

只是看起来满满的,所以最终发现:

来解决我的问题

在本例中,是转义的引号导致json格式错误。我的最终代码如下所示

$response = $response->getBody()->getContents();
$clean = stripslashes($response);
$clean = substr($clean, 1, -1);

dd(json_decode($clean));
请不要这样写你的API

顺便说一句,当您发送请求或响应某些内容时,内容类型很有意义。但是您发送了一个GET请求,该请求没有内容

要为响应指定首选的内容类型,应该使用Accept-HTTP头,例如Accept:application/json

我不确定这是否能解决你的问题,但只要把事情弄清楚并正确

顺便说一句,当您发送请求或响应某些内容时,内容类型是有意义的。但是您发送了一个GET请求,该请求没有内容

要为响应指定首选的内容类型,应该使用Accept-HTTP头,例如Accept:application/json


我不确定这是否能解决你的问题,但只要把事情弄清楚并正确

语法错误。谢谢,我的意思是使用json_last_错误调试您的解码错误:看起来您需要在json_解码之前去掉斜杠。如果执行$content=json\u decodestripshes$response->getBody->getContents;,会发生什么;?谢谢,注意,比preg_替换语法错误更好。谢谢,我的意思是使用json_last_错误调试您的解码错误:看起来您需要在json_解码之前去掉斜杠。如果执行$content=json\u decodestripshes$response->getBody->getContents;,会发生什么;?谢谢N.B.比preg_替换好