2014-02-09 56 views
1

我有一個JSON響應是解碼到一個數組$數據從JSON獲取變量值解碼響應

stdClass Object ([outboundSMSMessageRequest] => stdClass Object ([deliveryInfoList] => stdClass Object ([deliveryInfo] => stdClass Object ([address] => 8606142527 [deliveryStatus] => Submitted) [resourceURL] => http://api-testmobile.com/smsmessaging/1/outbound/OPNHSE/requests/urn:uuid:0f55fd13-a419-4ad9-adec-3dcf63ca39c1/deliveryInfos) [senderAddress] => OPNHSE [outboundSMSTextMessage] => stdClass Object ([message] => Sam has requested a payment of Rs 10.00.) [clientCorrelator] => [receiptRequest] => stdClass Object ([notifyURL] => [callbackData] =>) [senderName] => [resourceURL] => http://api-openhouse.testingmobile.com/smsmessaging/1/outbound/OPNHSE/requests/urn:uuid:0f5-a419-4ad9-adec-3dcf63ca39c1)) 

我想存儲[deliveryStatus] => Submitted這個「提交」到一個變量。

我已經試過$dStatus=$data['deliveryStatus'];但它不工作:(

UPDATE

我試圖通過json_decode將其轉換爲關聯數組($的數據,TRUE);

Array ([outboundSMSMessageRequest] => Array ([deliveryInfoList] => Array ([deliveryInfo] => Array ([address] => 98989 [deliveryStatus] => Submitted) [resourceURL] => http://api-otest.com/smsmessaging/1/outbound/OPNHSE/requests/urn:uuid:3b277b5b-cf79-4551-872f-16674499bc09/deliveryInfos) [senderAddress] => OPNHSE [outboundSMSTextMessage] => Array ([message] => sam has requested a payment of Rs 100.00 through payt.me . Kindly clickhttps://www.test.me/test to pay.) [clientCorrelator] => [receiptRequest] => Array ([notifyURL] => [callbackData] =>) [senderName] => [resourceURL] => http://api-test.com/smsmessaging/1/outbound/OPNHSE/requests/urn:uuid:3b277b5b-cf79-4551-872f-16674499bc09)) 

我得到這個。現在如何獲得deliveryStatus變量?

回答

0

我建議看看你輸出的HTML的視圖源,或者包裝print_r標記爲<pre></pre>,以便您可以更輕鬆地查看結構。

此外,元素是Object類的,這意味着它們不是數組,因此您需要使用->來訪問對象的元素。

所以,如果它是一個對象:

$data = json_decode($response); 
$dStatus = $data->outboundSMSMessageRequest->deliveryInfoList->deliveryInfo->deliveryStatus; 

如果它是一個數組,然後:

$data = json_decode($response, true); 
$dStatus = $data['outboundSMSMessageRequest']['deliveryInfoList']['deliveryInfo']['deliveryStatus']; 

你看,deliveryStatus項嵌套在第一種情況下的子對象,並在第二種情況下的子陣列中。

+0

我試過,但即時得到一個PHP錯誤遇到 嚴重性:注意 消息:試圖讓非對象 文件名的屬性:控制器/衝刺。php 行號:138 – Piya

+0

您需要知道如何調試代碼......首先,查看第138行,並用'print_r'檢查您嘗試訪問的對象。 –

+0

你可以告訴我如何從他的asssociative array.i更新問題 – Piya

0

如果你想訪問它一個關聯數組,你應該先將它轉換爲一個關聯數組。通過TRUE作爲json_decode函數的第二個參數,如文檔中所述:http://php.net/json_decode

0

這是因爲您正在以錯誤的方式訪問數據。 json_decode返回一個對象,所以你需要訪問這些字段作爲對象屬性。例如:

而不是

$dStatus=$data['deliveryStatus']; 

嘗試的成員訪問格式

$dStatus=$data->deliveryStatus; 

如果您要訪問的數據作爲關聯數組,這也是很簡單。

當你調用json_decode,通過true作爲第二個參數:

$myJson = json_decode($data,true); 

請參閱document on json_decode以獲取更多信息。

+0

我試過了成員訪問格式,但是說錯誤是未定義的變量。 – Piya

+0

確保成員「路徑」是正確的。我沒有機會詳細看看你退回的對象(試圖同時看我2歲的女兒:P) – Zarathuztra

+0

:D謝謝。我會檢查它 – Piya