关于如何将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)