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" }

また、echo $exchangeT 行が原因で 500 内部サーバー エラーが発生します。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関数定義から、2 番目の引数がデフォルトで であることがわかりますfalse。この引数が行うこと (およびその名前が示すとおり) は、TRUEの場合、返されたオブジェクトが連想配列に変換されることです。

だから、あなたの場合、

$exchangeToken = json_decode($exchangeToken, true);

必要なことをする必要があります。

于 2016-07-21T12:45:57.850 に答える
1

2 番目のパラメーターとして true を渡すだけで、2 番目のパラメーターが true の場合、json_decode() はオブジェクトではなく配列形式で返されます。

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