You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift字典对象数组发送至Firebase云函数后结构异常问题

问题原因与解决方案

问题根源

你遇到的结构变形问题,核心是Alamofire默认参数编码方式的特性导致的。Alamofire默认使用URLEncoding处理请求参数,这种编码是模拟HTML表单的提交格式(application/x-www-form-urlencoded),而表单格式本身不支持嵌套的数组+字典结构。

当你传入["assets": assets](assets是字典数组)时,URLEncoding会遍历所有子字典,把相同key(比如assetType、assetPath)对应的所有值提取出来合并成一个数组,最终就变成了云函数里看到的单字典结构——每个key对应一个包含所有值的数组。

解决办法

只需要将请求的参数编码方式改为JSONEncoding即可,因为JSON格式原生支持嵌套的数组和字典结构,能完整保留你原本的数据层级。修改后的请求代码如下:

Alamofire.request(
    "https://....",
    method: .post,
    parameters: ["assets": assets],
    encoding: JSONEncoding.default
)

这样发送请求后,云函数中req.body.assets的结构就会和你Swift里的assets完全一致:

[ 
  { "assetType": "video", "assetPath": "some_path" }, 
  { "assetType": "image", "assetPath": "some_other_path" } 
]

简单来说,JSONEncoding会把参数序列化为标准JSON字符串放在请求体里,不会像URLEncoding那样做扁平化处理,完美适配嵌套数据结构的传输需求。

内容的提问来源于stack exchange,提问作者K.Wu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:10:49