如何使用 Alamofire SWIFT 在 post api 中发送 JSON

Posted

技术标签:

【中文标题】如何使用 Alamofire SWIFT 在 post api 中发送 JSON【英文标题】:how to send JSON in post api using Alomofire SWIFT 【发布时间】:2016-08-08 09:37:00 【问题描述】:

我需要在 swift 中使用 alamofire 在 post api 中发送 JSON 格式。数据需要发送的方式是


"data": [
    "id": "1015683997",
    "name": "Pawel"
, 
    "id": "108350039247",
    "name": "Randeep"
, 
    "id": "115607797616",
    "name": "Mohit"
]

我现在能够生成的方式是:

["data": 
data =     (
            
        id = 101583997;
        name = "Pawel";
    ,
            
        id = 108359247;
        name = "Randeep";
    ,
            
        id = 11567616;
        name = "Mohit ";
    
);

]

使用下面提到的方式生成json格式。

for i in 0..<self.arrFriendsList.count
    

        let dictFrndList:[String: AnyObject] = [
            "id" : arrFriendsList[i].valueForKey("id")!,"name" : arrFriendsList[i].valueForKey("name")!
            ]

        arrFrndList.addObject(dictFrndList)
    

那么,

let dictFBFrndList: [String: AnyObject] = [

        "data":arrFrndList
    ]

那么,

let params: [String: AnyObject] = [

        "access_token" : accessToken,
        "data":dictFBFriends
    ]

所以,请指导我。我已经花了一天多的时间。提前致谢。

【问题讨论】:

JSON 目标中没有提到 access_token。您输入两次data(作为键) 这不是问题,问题是字典添加到数组格式更改时不会保留为 JSON 格式。那么,我该如何维护呢。 我不明白你的真正问题。你需要澄清。是不是因为([不一样? @Larme 问题是数据发送的格式不是 JSON。 我不明白你对哪一部分有问题。您可能应该改写您的问题。另外,你提到了 Alamofire,但你没有包括对它的调用。 【参考方案1】:

我同意 Larme 所说的,你应该在参数中发布“arrFrndList”,其中包含关键“数据”而不是 dictFBFrndList。

【讨论】:

这不是解决方案,要求是将格式转换为json。【参考方案2】:

以这种方式管理

let jsonData = try! NSJSONSerialization.dataWithJSONObject(arrFriendsList, options: NSJSONWritingOptions.PrettyPrinted)

    let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String

    print(jsonString)

    let params: [String: AnyObject] = [

        "access_token" : accessToken,
        "data":jsonString
    ]

【讨论】:

【参考方案3】:
let options = NSJSONWritingOptions()
    let data = try? NSJSONSerialization.dataWithJSONObject(parameters, options: options)
    let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string:"http:/myurl.com")

    if let str = NSString(data: data!, encoding: NSUTF8StringEncoding) as? String 
        print(str)
    
    mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
    mutableURLRequest.setValue("your_access_token", forHTTPHeaderField: "Authorization")
    mutableURLRequest.HTTPBody = data
    mutableURLRequest.HTTPMethod = "POST"

    Alamofire.request(mutableURLRequest).responseJSON()
        json in
        if let value = json.result.value 
            let _json = JSON(value)
            if (!_json.isEmpty)
                print(_json)
            
        
    

您可以查看如何查看您的 JSON 数组此代码。查看第 5 个单元格代码。此代码将在输出屏幕中为您编写 json 数组,您可以从那里复制并粘贴 here,然后您将看到如何发送数据。

也许这种方式可以帮助你。

【讨论】:

以上是关于如何使用 Alamofire SWIFT 在 post api 中发送 JSON的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中使用alamofire上传图库图片

如何使用 Swift 5 在 Xcode 10.2.1 中添加 alamofire

如何在 Swift 中使用 Alamofire 读取本地 JSON

如何在 Swift 3 中使用 Alamofire 4 解析这个 json?

如何使用 Swift 3 将单例与 Alamofire 一起使用?

如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?