如何使用 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 5 在 Xcode 10.2.1 中添加 alamofire
如何在 Swift 中使用 Alamofire 读取本地 JSON
如何在 Swift 3 中使用 Alamofire 4 解析这个 json?