将 Alamofire 结果解析为 Swift 中的对象(使用:Alamofire、SwiftyJSON 和 ObjectMapper)

Parsing Alamofire result into objects in Swift (using: Alamofire, SwiftyJSON & ObjectMapper)

我在解析传入的 JSON 时遇到问题。

这是我的功能:

func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) {
        let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)

        let phoneNumbersDictionary = phonenumbers.map({ ["number": [=11=]] })

        let JSON = try? NSJSONSerialization.dataWithJSONObject(phoneNumbersDictionary, options: [])

        let request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.HTTPMethod = "POST"
        request.HTTPBody = JSON

        Alamofire.request(request).validate().responseJSON(completionHandler: {response in
            if response.result.isSuccess{
                if let value = response.result.value {
//                    let json = JSON(value)
                    if let users:Array<User> = Mapper<User>().mapArray(value) {
                        completionHandler(users, nil)
                    } else {
                        completionHandler([nil], nil)
                    }
                }
            }
            if response.result.isFailure{
                let message = ApiMessage()
                message.message = "No users found"
                completionHandler([nil],message)
            }
        })
    }

通常我先将结果转换为 JSON 但这次我在尝试这样做时遇到编译错误:

这确实是我在函数上方声明的 JSON 变量。我现在得到了这个:

func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) {
    let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)

    let phoneNumbersDictionary = phonenumbers.map({ ["number": [=10=]] })

    let inputJSON = try? NSJSONSerialization.dataWithJSONObject(phoneNumbersDictionary, options: [])

    let request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.HTTPMethod = "POST"
    request.HTTPBody = inputJSON

    Alamofire.request(request).validate().responseJSON(completionHandler: {response in
        if response.result.isSuccess{
            if let value = response.result.value {
                let json = JSON(value)
                let jsonString = json.rawString()
                if let users:Array<User> = Mapper<User>().mapArray(jsonString) {
                    completionHandler(users, nil)
                } else {
                    completionHandler([nil], nil)
                }
            }
        }
        if response.result.isFailure{
            let message = ApiMessage()
            message.message = "No users found"
            completionHandler([nil],message)
        }
    })
}