如何使用SwiftyJSON解析带有AnyHashable值的PayPal JSON响应?

问题描述:

我正在使用PaypalSDK向我正在开发的应用程序添加PayPal付款方式,它已经在工作,并且当付款成功时,我得到了一个转换为jsonObject的响应,但我不知道如何解析它以便仅从响应中提取代码。这是我收到如何使用SwiftyJSON解析带有AnyHashable值的PayPal JSON响应?

JSON: [AnyHashable("response"): { 
code = "******************* -****************-**********************"; 
}, AnyHashable("response_type"): authorization_code, AnyHashable("client"): { 
environment = sandbox; 
"paypal_sdk_version" = "2.11.5"; 
platform = iOS; 
"product_name" = "PayPal iOS SDK"; 
}] 

响应而这就是我对我的payPalFuturePaymentViewController方法:

func payPalFuturePaymentViewController(_ futurePaymentViewController: PayPalFuturePaymentViewController, didAuthorizeFuturePayment futurePaymentAuthorization: [AnyHashable: Any]) { 
    print("PayPal Future Payment Authorization Success!") 
    self.resultText = futurePaymentAuthorization.description 
    let jsonObject = JSON(futurePaymentAuthorization.description) 
    print("JSON: \(jsonObject)") 
    // send authorization to your server to get refresh token. 
    futurePaymentViewController.dismiss(animated: true, completion: {() -> Void in 

     var paypalPago = PagoItem(noTarjeta: "", fechaExp: "", cvc: "", token: "", tipo: "PayPal") 

     self.metodosPago.append(paypalPago) 
     self.saveMetodo() 

     let destViewController : UIViewController = self.storyboard!.instantiateViewController(withIdentifier: "pagosLlenos") 
     var vcArray = self.navigationController?.viewControllers 

     vcArray?.removeLast() 
     vcArray?.append(destViewController) 
     self.navigationController?.setViewControllers(vcArray!, animated: true) 
    }) 
} 

所以我想要做的就是得到响应的代码,把它在一个变量,然后包括在paypalPago项变量:

var paypalPago = PagoItem(noTarjeta: "", fechaExp: "", cvc: "", token: PayPalCode, tipo: "PayPal") 

如何解析这个JSON和提取我需要的代码任何帮助,将不胜感激:)

解决

这是非常容易的实际问题是,我是存储字符串描述不实际的JSON响应,所以我不得不改变

let jsonObject = JSON(futurePaymentAuthorization.description) 

let jsonObject = JSON(futurePaymentAuthorization) 

现在我的回复如下所示:

JSON: { 
"client" : { 
"environment" : "sandbox", 
"product_name" : "PayPal iOS SDK", 
"paypal_sdk_version" : "2.11.5", 
"platform" : "iOS" 
    }, 
"response_type" : "authorization_code", 
"response" : { 
"code" : "****************_*********_***********************" 
} 

现在我可以解析它像任何正常的JSON

let response = jsonObject["response"]["code"].string! 
    print(response) 

    // send authorization to your server to get refresh token. 
    futurePaymentViewController.dismiss(animated: true, completion: {() -> Void in 
     var paypalPago = PagoItem(noTarjeta: "", fechaExp: "", cvc: "", token: response, tipo: "PayPal") 
    self.metodosPago.append(paypalPago)