1

有关如何将 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 对象,以便我可以提取响应/结果的特定属性?

4

2 回答 2

0

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

var data = task.result

let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary
于 2018-01-31T23:10:49.360 回答
0

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

将其导入您要解析的类中

import SwiftyJSON

将 resonseJSON 的值替换为:

let responseJSON = JSON(task.result)
于 2019-02-21T14:56:28.627 回答