【发布时间】:2021-09-01 14:29:19
【问题描述】:
我正在从 Cardstream 支付网关 android sdk(在本机模块中)获取数据以做出本机反应,但数据不是有效的 JSON:
'{ __wafRequestID=2021-06-16T08:02:14Z|0e2314f32f|115.186.169.10|gk0GHP1i4V, action=SALE, addressCheckPref=not known,not checked,matched,not matched,partially matched, amount=14, amountRetained=0, avscv2CheckEnabled=Y, caEnabled=Y, cardCVVMandatory=Y, cardExpiryDate=0322, cardFlags=8323072, cardIssuer=UNKNOWN, cardIssuerCountry=United Kingdom, cardIssuerCountryCode=GBR, cardNumberMask=424242******4242, cardNumberValid=Y, cardScheme=Visa, cardSchemeCode=VC, cardType=Visa Credit, cardTypeCode=VC, cftEnabled=N, countryCode=826, currencyCode=826, currencyExponent=2, customerName=fgg, customerReceiptsRequired=Y, cv2CheckPref=not known,not checked,matched,not matched,partially matched, eReceiptsEnabled=N, merchantAlias=100001, merchantID=100001, merchantID2=100001, paymentMethod=card, postcodeCheckPref=not known,not checked,matched,not matched,partially matched, processMerchantID=100001, requestID=60c9b007225c7, requestMerchantID=100001, responseCode=65566, responseMessage=Disallowed cardnumber, responseStatus=2, riskCheckEnabled=Y, riskCheckPref=not known=continue,not checked=continue,approve=continue,decline=decline1,review=authonly,escalate=authonly, riskProcessorID=41, riskProcessorName=Kount, rtsEnabled=Y, scaExemption=lowvalue,trusted, state=finished, surchargeEnabled=Y, surchargeRequired=Y, threeDSCheckPref=authenticated, threeDSEnabled=N, timestamp=2021-06-16 09:02:16, transactionID=112446674, type=1, vcsResponseCode=0, vcsResponseMessage=Success, xref=21061609KX02TQ16YP35TTD}'
如何将其转换为有效的 JSON 以便我可以解析它?我尝试了一些正则表达式替换,但有些值也有冒号,这把它搞砸了。
【问题讨论】:
-
这不是无效的 JSON,它根本不是 JSON。您基本上是在声称苹果是无效的橙子,因为您渴望橙子。联系支付网关并询问他们如何解析他们的废话。
-
哈哈不,我没有声称它,只是寻找任何解决方法来解析它(不管它是什么)
-
我认为你标题的前三个词有区别; “转换无效的 JSON”。无论如何,解决方法是联系支付网关并询问他们如何解析他们的废话。
-
正则表达式可能不是您想要的。您确实应该联系您正在使用其 API 的公司,并要求提供有关如何解析其响应的文档。您不知道您现在处理的响应是否代表所有未来的响应,或者某些尚未看到的语法是否会完全破坏您的正则表达式。最好提前知道,然后在生产中的某个时间窗口内无法正确处理响应。
标签: javascript android json regex payment-gateway