2016-07-21 144 views
2

我想從我的格式API響應我的JSON響應的一部分。Echo JSON響應與PHP

下面是代碼:

$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內部服務器錯誤,從回聲$ exchangeT線造成的。我想獲取JSON響應的access_token部分,並對其進行驗證,並最終將其保存到數據庫中。

+1

500錯誤是web服務器說「我有一個主要問題,但我不想公開談論它」的方式。看看服務器的錯誤日誌,會有一個明確的信息說明什麼是錯的。 –

回答

2

如果您通過true在你json_decodesecond parameter那麼你將得到的array代替object 所以 改變這種

 $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

1

只是傳遞true作爲第二個參數,如果第二個參數爲true,json_decode()將返回數組格式而不是對象。

$exchangeT = json_decode($exchangeToken, true); 
2

和函數簽名:

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

從函數定義,你可以看到,第二個參數是$assoc默認false。這個參數的作用(它的名稱暗示)是,當TRUE,10返回的對象將被轉換爲關聯數組

所以,你的情況,

$exchangeToken = json_decode($exchangeToken, true); 

應該做你所需要的。