2017-05-29 109 views
1

我想從API獲取數據,但仍然收到'未定義屬性'PHP錯誤。在PHP中檢索JSON數據(有'未定義屬性'錯誤)

我想在數據中的Datas中獲得'SESSION_ID'。 (JSON/POST)

{ 
"Data": 
{ 
    "Code":"00", 
    "Datas": 
    { 
     "COM_CODE":"80001", 
     "USER_ID":"USER_ID", 
     "SESSION_ID":"39313231367c256562253866253939256563253838253938:0HDD9DBtZt2e" 
    }, 
    "Message":"", 
    "RedirectUrl":"" 
}, 
"Status":"200", 
"Error":null 
} 

而且我的PHP代碼來檢索SESSION_ID是這樣的。首先,發送$data並獲得SESSION_ID

function api_login(){ 


$data = array(
    "COM_CODE" => "000000", 
    "USER_ID" => "USER" 
    ); 

$ch = curl_init("https://apifakeurl.com/Login"); 
$payload = json_encode($data); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
$result = curl_exec($ch); 
curl_close($ch); 

$json = json_decode($result); 

$session_id = $json->Data->Datas->SESSION_ID; 
//Here is the line where I get the 'Undefined Property' error. 

return $session_id; 
} 

我作爲PHP初學者,我不知道一個錯誤行是否是問題,還是整個結構是錯誤的。請幫忙!

+1

'回聲$ result',看看它是否是相同的JSON爲您發佈。如果完全一樣,則不應該收到「未定義的屬性」錯誤消息。 –

+0

在使用數據之前,您應該檢查$ result!= false,因爲這部分可能由於各種原因而失敗。 –

+0

@AmalMurali感謝您的幫助。 '$ result'是問題。 –

回答

0

如果從$結果你的回報是真的很喜歡你寫的JSON,你的代碼工作,

我認爲你需要print_r($result)來自卷邊;

此代碼的幫助:

<?php 


$json = '{ 
"Data": 
{ 
    "Code":"00", 
    "Datas": 
    { 
     "COM_CODE":"80001", 
     "USER_ID":"USER_ID", 
     "SESSION_ID":"39313231367c256562253866253939256563253838253938:0HDD9DBtZt2e" 
    }, 
    "Message":"", 
    "RedirectUrl":"" 
}, 
"Status":"200", 
"Error":null 
}'; 

echo '<pre>'; 
$decode = json_decode($json); 
print_r(json_decode($json)); 
$session_id = $decode->Data->Datas->SESSION_ID; 
echo $session_id; 
+0

是的問題出現在' $ data'我發送來檢索'$ json',我重新學習了'print_r'的用法,非常感謝 –

+0

您的歡迎@DahnHwang,您也可以使用var_dump($ variable);更多詳細信息 –

0

我有這樣的語法運氣: $session_id = $json['Data']['Datas']['SESSION_ID'];

沒有沒有括號內單引號工作。

+0

對不起,但我有嚴重的語法錯誤..;( –

+0

我想要得到的'SESSSION_ID'被格式化在數組中,而不是在對象中感謝您的時間無論如何 –