簡體   English   中英

在Alamofire 4中使用SwiftyJson為MultipartFormData請求創建JSON數據

[英]Creating JSON data using SwiftyJson for MultipartFormData request in Alamofire 4

我需要使用Alamofire 4發送MultipartFormData .Post請求。

JSON和文件數據需要發送。

我很難將SwiftyJson對象轉換為Data對象類型。

SwiftyJSON看起來像這樣:

var json: JSON = JSON([ "Name" : "Ben", "UserID" : 2, "Username" : "benji"])

Alamofire 4請求看起來像這樣

service.upload(multipartFormData: { (MultipartFormData) in
            MultipartFormData.append(userData, withName: "userInfo")
            MultipartFormData.append(fileUrl, withName: "File")    
            }, to: url) { (encodingResult) in
                switch encodingResult {
                case .success(let upload, _, _):
                    upload.responseJSON { response in
                        debugPrint(response)
                    }
                case .failure(let encodingError):
                    print(encodingError)
                }
            }

我的問題是如何將SwiftyJson對象轉換為類型數據,以便可以將其附加到mutlipartformdata? 我嘗試了以下方法,但是它們似乎無法正常工作,而且我無法在線找到解決方案:

json.rawData()
json.rawString?.data(using: String.Encoding.utf8)

我發現在下面的鏈接中所述的SwiftyJSON中存在json.rawString的錯誤/曾經存在此錯誤:

https://github.com/SwiftyJSON/SwiftyJSON/issues/645

使字段“隱式展開”將解決此問題:

    var data = JSON([
                "name": _name.text,
                "code": _code.text,
                "iconId": _id])

//data.rawString() will return nil

    var data = JSON([
                "name": _name.text!,
                "code": _code.text!,
                "iconId": _id])
//data.rawString() will return correct result

之后,我可以簡單地按如下方式使用它:

self.service.upload(multipartFormData: { (MultipartFormData) in
            MultipartFormData.append((data.rawString()?.data(using: String.Encoding.utf8))!, withName: "trackerInfo")
            MultipartFormData.append(fileUrl, withName: "File") 
        }, to: url) { (encodingResult) in
            switch encodingResult {
            case .success:
                print(encodingResult)
            case .failure(let encodingError):
                print(encodingError)
            }
        }

暫無
暫無

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

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