如何将json响应转换为php对象?

时间:2015-03-14 04:25:23

标签: php json

以下是我的json回复,我使用json_decode来转换php object中的回复,状态为'和' msg'转换成功但问题是' amt'。如何获得' amt'在php对象? $amt=$response->transaction_details['amt'];无效。

回复:

{" status":1," msg":"交易成功获得"," transaction_details":{" 686868686505& #34; {" payid":" 293642892"" AMT":" 10.00"" txnid" :" 686868686505"" additional_charges":" 0.00"" productinfo":"衬衫"&#34 ;姓名":" WILLIAM}}}

代码:

$response = json_decode($o,true);
$msg = $response['msg']; 
$status = $response['status'];
$amt=$response->transaction_details->['amt'];
echo '<br>';
echo $amt;
echo '<br>';
echo $msg;
echo '<br>';
echo $status;

输出:

成功获得的交易
1

1 个答案:

答案 0 :(得分:1)

您正在将数组与对象混合。

json_decode第二个参数将让你获取json对象或json数组,它将返回json对象,如果它为null或false,并返回json数组,如果你将第二个参数设置为true或任何转换为真。

在php.net中查看它的文档

这样,您需要将其更改为:

$response = json_decode($o); // or json_decode($o, false);
$msg = $response->msg; 
$status = $response->status;
//since you use all numbers for json property, I'll assume this would fail
$amt=$response->transaction_details->686868686505->amt;
echo '<br>';
echo $amt;
echo '<br>';
echo $msg;
echo '<br>';
echo $status;

或者如果您喜欢使用数组

$response = json_decode($o,true);
$msg = $response['msg']; 
$status = $response['status'];
$amt=$response['transaction_details']['686868686505']['amt'];
echo '<br>';
echo $amt;
echo '<br>';
echo $msg;
echo '<br>';
echo $status;