Ios 字典对象数组在发送到Swift中的firebase云函数后发生变化?
我有一个名为Ios 字典对象数组在发送到Swift中的firebase云函数后发生变化?,ios,swift,firebase,google-cloud-functions,Ios,Swift,Firebase,Google Cloud Functions,我有一个名为资产的字典对象数组,当用Swift打印出来时,它显示: [ ["assetType": "video", "assetPath": "some_path"], ["assetType": "image", "assetPath": "some_other_path"] ] 这是完美的,但是,在我将其发送到firebase云函数并在云函数中打印出来后,资产变成: [ { "assetType": ["video", "image"],
资产
的字典对象数组,当用Swift打印出来时,它显示:
[
["assetType": "video", "assetPath": "some_path"],
["assetType": "image", "assetPath": "some_other_path"]
]
这是完美的,但是,在我将其发送到firebase云函数并在云函数中打印出来后,资产
变成:
[
{
"assetType": ["video", "image"],
"assetPath": ["some_path", "some_other_path"]
}
]
为什么会发生这种情况?我应该如何解决这个问题
------------------------------------更新----------------------
我使用Alamofire
模块执行http请求:
Alamofire.request(
"https://....",
method: .post,
parameters: [
"assets": assets
]
)
------------------------------------更新2--------------------
我的云功能如下:
exports.testFunction = functions.https.onRequest((req, res) => {
const { assets } = req.body;
return res.status(200).send(assets)
})
调用后立即将
资产
发送回更新:阿拉莫菲尔
执行此操作的方法位于底部
我尝试了其他方法,只能回答问题的第二部分:如何解决这个问题?。显然,不使用Alamofire
解决了这个问题,但我确信Alamofire
没有什么问题,可能缺少一些东西,我会仔细研究一下,但是现在,Alamofire
的另一个替代方法是URLSession
:
let session = URLSession.shared
let url: URL = URL(string: "https://...")!
let request = NSMutableURLRequest(url: URL)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
do {
request.httpBody = try JSONSerialization.data(
withJSONObject: [
"assets": assets
],
options: JSONSerialization.WritingOptions()
)
let task = session.dataTask(with: request as URLRequest) { (data, _, _) in
if let responseData = data {
print(String(data: responseData, encoding: .utf8)!)
}
}
task.resume()
} catch {
print(error)
}
它会打印:
[
{
"assetType": "video",
"assetPath": "some_path"
},
{
"assetType": "image",
"assetPath": "some_other_path"
}
]
------------------------------------阿拉莫菲尔之路---------------------------
阅读文档,显然,我还应该添加编码
选项:
Alamofire.request(
"https://...",
method: .post,
parameters: [
"assets": assets
],
encoding: JSONSerialization(options: [])
)
这个问题将得到解决。有人投票结束了这个问题,因为它离题了,因为它在问“为什么这个代码不起作用?”,首先,我不是在问这个问题,我个人认为我的代码应该起作用。其次,如果我不能在这里问这个问题,你认为我应该去哪里问这个问题?也许这与云功能有关。不是您的swift代码。@S1LENTWARRIOR,谢谢您的回复,我的firebase云函数立即发回
资产
,而不做任何处理。但不知怎的,这种情况发生了。我已经更新了这个问题,很好,你自己找到了解决方案,并发布了。“现在我鼓励你也接受你的答案。”兰特瓦利奥,谢谢你。是的,我会在24小时内接受,如果允许的话。