我正在尝试从Plaid API回应我的一部分JSON响应。
以下是代码:
$data = array(
"client_id"=>"test_id",
"secret"=>"test_secret",
"public_token"=>"test,fidelity,connected");
$string = http_build_query($data);
//initialize session
$ch=curl_init("https://tartan.plaid.com/exchange_token");
//set options
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//execute session
$exchangeToken = curl_exec($ch);
echo $exchangeToken;
$exchangeT = json_decode($exchangeToken);
echo $exchangeT['access_token'];
//close session
curl_close($ch);
以下是回复:
{ "sandbox": true, "access_token": "test_fidelity" }
我还得到一个500内部服务器错误,它来自echo $ exchangeT行。我想获取JSON响应的access_token部分,回显它以进行验证,最后将其保存到数据库中。
答案 0 :(得分:3)
如果您在true
中将second parameter
作为json_decode
传递,那么您将获得array
而不是object
所以
改变这个
$exchangeT = json_decode($exchangeToken, true);
// it wii output as $exchangeT = array('sandbox'=>true,'access_token'=>'test_fidelity');
echo $exchangeT['access_token'];
答案 1 :(得分:2)
功能签名:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
从函数定义中,您可以看到第二个参数$assoc
默认为false
。这个论点的作用(以及它的名字暗示)是,当 TRUE 时,返回的对象将被转换为关联数组。
所以,在你的情况下,
$exchangeToken = json_decode($exchangeToken, true);
应该做你需要的。
答案 2 :(得分:1)
只传递true作为第二个参数,如果第二个参数为true,则json_decode()以数组格式而不是object返回。
$exchangeT = json_decode($exchangeToken, true);