2017-06-21 141 views
-1

我收到了json格式的付款設備的回覆。我想訪問數組。 這裏是我的JSON響應PHP - 將JSON格式轉換爲數組

Without OrderId:- 
doInBackground: {"amount":"1.00","reason":"Transaction declined by card","transactionId":"219775","transactionData":"{\"result\":\"success\",\"transactionId\":219775,\"billNumber\":\"101:879209:675466.0\",\"applicationId\":\"A0000001523010\",\"tsi\":\"E800\",\"tvr\":\"0800048000\",\"date\":\"21-06-2017\",\"currency\":\"NA\",\"tcResult\":\"0\",\"amount\":\"1.00\",\"terminalId\":\"98207200\",\"tipAmount\":\"0.00\",\"time\":\"15:41:58\",\"batchNumber\":\"1\",\"receiptLink\":\"http:\\\/\\\/test.mosambee.in\\\/ROOT1\\\/ViewReciept.do?action=mobileReceipt&txnId=219775\",\"merchantId\":\"P587956\",\"transactionStatus\":\"Declined\",\"deviceId\":1449,\"cardHolderName\":\"RK9018388863    \\\/\",\"invoiceNumber\":\"40\",\"approvalCode\":\"689653\",\"transactionMode\":\"CHIP\",\"cardType\":\"Invalid Card\",\"message\":\"Transaction declined by card\",\"transactionType\":\"Sale\",\"retrievalReferenceNumber\":\"000000219775\",\"cashBack\":\"NA\",\"cardNumber\":\"652163XXXXXX1698\",\"isSignatureRequired\":false,\"orderId\":\"101\",\"shipperId\":\"879209\"}","result":"false","reasonCode":"NA"} 

我試圖JSON解碼,但它無法正常工作。它給了我空的數據。 我試過了:

$data = json_decode('Without OrderId:- 
      doInBackground: {"amount":"1.00","reason":"Transaction declined by card","transactionId":"219775","transactionData":"{\"result\":\"success\",\"transactionId\":219775,\"billNumber\":\"101:879209:675466.0\",\"applicationId\":\"A0000001523010\",\"tsi\":\"E800\",\"tvr\":\"0800048000\",\"date\":\"21-06-2017\",\"currency\":\"NA\",\"tcResult\":\"0\",\"amount\":\"1.00\",\"terminalId\":\"98207200\",\"tipAmount\":\"0.00\",\"time\":\"15:41:58\",\"batchNumber\":\"1\",\"receiptLink\":\"http:\\\/\\\/test.mosambee.in\\\/ROOT1\\\/ViewReciept.do?action=mobileReceipt&txnId=219775\",\"merchantId\":\"P587956\",\"transactionStatus\":\"Declined\",\"deviceId\":1449,\"cardHolderName\":\"RK9018388863    \\\/\",\"invoiceNumber\":\"40\",\"approvalCode\":\"689653\",\"transactionMode\":\"CHIP\",\"cardType\":\"Invalid Card\",\"message\":\"Transaction declined by card\",\"transactionType\":\"Sale\",\"retrievalReferenceNumber\":\"000000219775\",\"cashBack\":\"NA\",\"cardNumber\":\"652163XXXXXX1698\",\"isSignatureRequired\":false,\"orderId\":\"101\",\"shipperId\":\"879209\"}","result":"false","reasonCode":"NA"}', true); 
     return $data; 

這給了我空數據。

+0

是的,這不是*只是* JSON ... – deceze

回答

1

正如@Ian指出的那樣,您的數據無效。但是,如果你剝離Without OrderId:- doInBackground:它會起作用。

$data = json_decode('{"amount":"1.00","reason":"Transaction declined by card","transactionId":"219775","transactionData":"{\"result\":\"success\",\"transactionId\":219775,\"billNumber\":\"101:879209:675466.0\",\"applicationId\":\"A0000001523010\",\"tsi\":\"E800\",\"tvr\":\"0800048000\",\"date\":\"21-06-2017\",\"currency\":\"NA\",\"tcResult\":\"0\",\"amount\":\"1.00\",\"terminalId\":\"98207200\",\"tipAmount\":\"0.00\",\"time\":\"15:41:58\",\"batchNumber\":\"1\",\"receiptLink\":\"http:\\\/\\\/test.mosambee.in\\\/ROOT1\\\/ViewReciept.do?action=mobileReceipt&txnId=219775\",\"merchantId\":\"P587956\",\"transactionStatus\":\"Declined\",\"deviceId\":1449,\"cardHolderName\":\"RK9018388863    \\\/\",\"invoiceNumber\":\"40\",\"approvalCode\":\"689653\",\"transactionMode\":\"CHIP\",\"cardType\":\"Invalid Card\",\"message\":\"Transaction declined by card\",\"transactionType\":\"Sale\",\"retrievalReferenceNumber\":\"000000219775\",\"cashBack\":\"NA\",\"cardNumber\":\"652163XXXXXX1698\",\"isSignatureRequired\":false,\"orderId\":\"101\",\"shipperId\":\"879209\"}","result":"false","reasonCode":"NA"}'); 
print_r($data); 
+0

我在我的數據中收到'\'。如何刪除.. ..? –

+0

@JayMomaya就在這裏打印你在問題中用'\'得到的數據類型? –

+0

他提到的答案是來自API,所以沒有解釋爲什麼 – Ian

0

您沒有有效的答覆,您期望什麼?

Without OrderId:- doInBackground:

無效。在此字符串上運行json_decode後,如果運行json_last_error_msg,則會出現「語法錯誤」。

在將消息傳遞到json_decode之前,必須剝去此消息中不屬於鍵值對的部分。

您也可以通過在https://jsonlint.com/上測試您的字符串來驗證這一點。

+0

其實,JSON只是純文本。一些Javascript數據結構的文本表示。它可以是一個對象或一個數組或一個標量值。 – axiac

+0

@axiac JSON是首字母縮寫詞... JavaScript Object Notation,JSON是由對象組成的結構化文檔 – Ian

+0

對象僅存在於內存中。 JSON是文本。它可以存儲在一個文件中或通過網絡發送。並沒有像「JSON對象」這樣的東西。不過,我並不是那個低估了你的答案的人。 – axiac

-1

做: - > echo json_decode('json/array name');