如何使用PHP将JSON字符串数据转换为数组


How to convert JSON string data into array using PHP?

我需要将JSON结果转换为PHP中的数组。这里我使用的是authorize.net支付网关沙盒。我可以在JSON字符串中得到响应($result)。但我不会通过使用json_decode

转换为php数组

$output = json_decode($result,true);print_r(输出)美元;

样例代码

<?php
    $data=array("createTransactionRequest" => array(
                    "merchantAuthentication" => array(
                        "name" => "2bU77DwM",
                        "transactionKey" => "92x86d7M7f6NHK98"
                     ),
                     "refId" => "9898989898",
                     "transactionRequest" => array(
                        "transactionType" => "authCaptureTransaction",
                        "amount" => "25",
                        "payment" => array(
                            "creditCard" => array(
                                "cardNumber" => "5424000000000015",
                                "expirationDate" => "1220",
                                "cardCode" => "999"
                            )
                        )
                    )
                )
            );
    $data_string = json_encode($data);
    $ch = curl_init('https://apitest.authorize.net/xml/v1/request.api');
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec($ch);
    curl_close($ch);        
    print_r($result); //Print the JSON data
    //Try to convert JSON into array
    $output = json_decode($result,true); 
    print_r($output); //Print empty

JSON响应 from print_r($result);

http://www.jsoneditoronline.org/?id=c75c5a6a4c247ad2f0aaf7c801daad39

试试下面的代码,你会得到结果。

<?php
    $data=array("createTransactionRequest" => array(
                    "merchantAuthentication" => array(
                        "name" => "2bU77DwM",
                        "transactionKey" => "92x86d7M7f6NHK98"
                     ),
                     "refId" => "9898989898",
                     "transactionRequest" => array(
                        "transactionType" => "authCaptureTransaction",
                        "amount" => "25",
                        "payment" => array(
                            "creditCard" => array(
                                "cardNumber" => "5424000000000015",
                                "expirationDate" => "1220",
                                "cardCode" => "999"
                            )
                        )
                    )
                )
            );
    $data_string = json_encode($data);
    $ch = curl_init('https://apitest.authorize.net/xml/v1/request.api');
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec($ch);
    curl_close($ch);        
// below is my code 
$final_result = json_decode( preg_replace('/['x00-'x1F'x80-'xFF]/', '', $result), true );
echo "<pre>";
print_r($final_result);
?>

你只需要使用
$output = json_decode(preg_replace ('/[' x00 - ' x1F ' x80 ' xFF ]/', '', $ 结果),真正的);

print_r(输出)美元;

我检查过了!这对我很有效。希望这将帮助!