簡體   English   中英

將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": $0] })

        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": $0] })

    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)
        }
    })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM