2014-10-20 88 views
0

我有一個簡單的JSON文件:PHP - 無法使用「。」解析JSON字符串

{ 
"json.transactionDetails":{ 
"transactionDate":1266518024, 
"transactionType":"bought", 
"userDescription":"reimbursement", 
"transactionDescription":"Bought 10 AAPL @200", 
"quantity":10, 
"amount":"2010.00", 
"price":"200.00", 
"commission":"10.00", 
} 
} 

然後一個PHP文件中獲取的JSON:

$t_detail = file_get_contents("details.json"); 
$transaction_detail = json_decode($t_detail); 
$tr_detail = $transaction_detail->json.transactionDetails; //this is my issue 

$transaction_type = $tr_detail->transactionType; 
$user_description = $tr_detail->userDescription; 

如何解析 「json.transactionDetails」?這段時間正在導致我的腳本失敗。如果我刪除了「json」。從這兩個腳本一切正常。有沒有辦法跳過樹中的第一個對象或什麼?我無法改變JSON輸出的方式,因爲它來自外部API。

+2

'.'是php中的連接運算符。你需要指定鍵爲'$ transaction_detail - > {「json.transactionDetails」} – 2014-10-20 18:34:03

+1

我建議做'json_decode($ t_detail,TRUE);'。這將使PHP爲您提供一個數組而不是一個對象,然後您可以執行'$ transaction_detail ['json.transactionDetails']'。 – 2014-10-20 18:35:44

回答

1

嘗試

$transaction_detail = json_decode($t_detail,true); 
$tr_detail = $transaction_detail['json.transactionDetails']; 

當你的json_decode爲true第二參數,它將解析JSON作爲數組,因此您可以使用array['key']語法

簡單地得到這些值,也可以

$transaction_detail = json_decode($t_detail); 
$tr_detail = $transaction_detail->{"json.transactionDetails"}; 
+0

我嘗試了兩個建議,仍然沒有得到任何東西。 – 2014-10-20 18:50:01

+0

嘗試$ transaction_detail - > {「json.transactionDetails」}; – 2014-10-20 18:52:01

+0

立即工作。謝謝 – 2014-10-20 18:54:16