I have a json response which is decode into an array $data as
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 ) )
I want to store [deliveryStatus] => Submitted
this "Submitted" into a variable.
I have tried $dStatus=$data['deliveryStatus'];
but its not working :(
UPDATE
I tried to convert it to associative array by json_decode($data,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 ) )
I got this.Now how to get the deliveryStatus variable?
I suggest to look at the view-source of the HTML you are outputting, or to wrap the print_r
in a <pre></pre>
tag, so that you can see the structure more easily.
Also, the elements are of class Object, which means they are not an array, so you need to use ->
to access the elements of your objects.
So if it is an object:
$data = json_decode($response);
$dStatus = $data->outboundSMSMessageRequest->deliveryInfoList->deliveryInfo->deliveryStatus;
If it is an array, then:
$data = json_decode($response, true);
$dStatus = $data['outboundSMSMessageRequest']['deliveryInfoList']['deliveryInfo']['deliveryStatus'];
You see, the deliveryStatus
entry is nested in sub-objects in the first case, and in sub-arrays in the second case.
If you want to access it a an associative array, you should convert it like an associative array first. Pass TRUE
as a second argument to json_decode
function as described in docs: http://php.net/json_decode
It's because you're accessing the data in the wrong fashion. json_decode returns an object, so you need to access these fields as object properties. For example:
Instead of
$dStatus=$data['deliveryStatus'];
Try a member access format
$dStatus=$data->deliveryStatus;
If you want to access the data as an associated array, that's also quite simple.
When you call json_decode
, pass true
as the second parameter:
$myJson = json_decode($data,true);
Please refer to the document on json_decode for more information.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.