2017-06-21 143 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');