解析响应表单 AWSTask,从 iOS swift 3 中的 lambda 返回



关于如何将AWSTask.result解析为JSON对象的任何建议?我正在调用 AWS Lambda 函数,该函数返回一个 JSON 字符串

下面的代码

let task = lambdaInvoker.invokeFunction("LambdaFunction", jsonObject: ["processName":processName])
 task.continue({ (task: AWSTask!) -> AWSTask<AnyObject>! in
        if (task.error != nil) {
            NSLog("Invoke Lambda returned an error : (task.error)")
            //NSLog("Invoke Lambda returned an error : (task.error)")
        } else {
            if (task.result != nil) {
                //NSLog("Invoke Lambda : result = (task.result)")
                var data = task.result as! NSDictionary 
                let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) //THIS WONT WORK, throws error that it cant cast to NSDictionary
                print("responseJSON = (responseJSON)")

            } else {
                NSLog("Invoke Lambda : unknow result : (task)");
                NSLog("Exception : (task.exception)")
                NSLog("Error : (task.error)" )
                }
        }
        return nil

有什么建议可以将其解析为 JSON 对象,以便我可以提取响应/结果的特定属性吗?

您应该在序列化数据之后而不是之前强制转换为NSDictionary

var data = task.result
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary

我使用SwiftyJSON进行解析:使用可可豆荚安装它 - https://cocoapods.org

将其导入要解析的类中

import SwiftyJSON

将 resonseJSON 的值替换为:

let responseJSON = JSON(task.result)

最新更新