在 Swift 中使用 Alamofire 发送包含字典对象数组的字典对象时会发生奇怪的行为?
Posted
技术标签:
【中文标题】在 Swift 中使用 Alamofire 发送包含字典对象数组的字典对象时会发生奇怪的行为?【英文标题】:Weird behavior occurs when sending a dictionary object that contains arrays of dictionary objects with Alamofire in Swift? 【发布时间】:2018-08-16 17:46:49 【问题描述】:在这里,我在 Swift 中使用以下字典对象调用我的 API(Firebase 云函数):
let data: [String: Any] = [
"array1": [1, 2, 3],
"array2": [
[
"key1": "value1",
"key2": "value2"
],
[
"key3": "value3",
"key4": "value4"
]
]
]
因此,“array1”是一个整数数组,“array2”是一个字典对象数组。我的云功能不除了发回收到的内容之外做任何其他事情:
exports.testFunction = functions.https.onRequest((req, res) =>
return res.status(200).send(req.body)
)
要调用这个云函数,我使用的是Alamofire
模块:
Alamofire.request(
"<url>",
method: .post,
parameters: data,
encoding: URLEncoding.httpBody,
headers: [
"Authorization": "...",
"Accept": "application/json"
]
).responseJSON (response) in
print(response)
上面的“print”语句打印:
这意味着“array1”没有任何问题,但是云函数以某种方式接收“array2”作为单个对象的数组,该对象具有 4 个键和值对:
"array2": [
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
]
为什么会发生这种情况,我该如何解决这个问题?
【问题讨论】:
【参考方案1】:显然问题出在encoding
参数上,只需将“URLEncoding.httpBody”切换为“JSONEncoding.default”即可解决问题!
【讨论】:
以上是关于在 Swift 中使用 Alamofire 发送包含字典对象数组的字典对象时会发生奇怪的行为?的主要内容,如果未能解决你的问题,请参考以下文章
使用 swift 在 Alamofire 中发送带有对象数组的 JSON 作为参数
如何使用 Alamofire SWIFT 在 post api 中发送 JSON
在swift中使用alamofire将参数作为原始数据发送。
在 Swift 中使用 Alamofire 网络进行解析时,如何在请求中发送内容类型?