2

我正在尝试回显来自 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 Internal Server Error,这是由 echo $exchangeT 行引起的。我想获取 JSON 响应的 access_token 部分,对其进行回显以进行验证,并最终将其保存到数据库中。

4

3 回答 3

3

如果你通过你的true然后你会得到一个而不是 这样改变这个second parameterjson_decodearrayobject

     $exchangeT = json_decode($exchangeToken, true);
// it wii output as $exchangeT = array('sandbox'=>true,'access_token'=>'test_fidelity');
        echo $exchangeT['access_token'];

欲了解更多信息,请阅读http://php.net/manual/en/function.json-decode.php

于 2016-07-21T12:33:49.380 回答
2

和函数签名:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

从函数定义中可以看出,第二个参数$assoc是 default false。这个参数的作用(顾名思义)是,当TRUE时,返回的对象将被转换为关联数组

所以,在你的情况下,

$exchangeToken = json_decode($exchangeToken, true);

应该做你需要的。

于 2016-07-21T12:45:57.850 回答
1

只需将 true 作为第二个参数传递,如果第二个参数为 true,则 json_decode() 以数组格式而不是对象返回。

 $exchangeT = json_decode($exchangeToken, true);
于 2016-07-21T12:29:15.933 回答