【问题标题】:Weird behavior occurs when sending a dictionary object that contains arrays of dictionary objects with Alamofire in Swift?在 Swift 中使用 Alamofire 发送包含字典对象数组的字典对象时会发生奇怪的行为?
【发布时间】:2023-03-07 10:26:02
【问题描述】:

在这里,我在 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"
    }
]

为什么会发生这种情况,我该如何解决这个问题?

【问题讨论】:

    标签: json swift rest firebase alamofire


    【解决方案1】:

    显然问题出在encoding参数上,只需将“URLEncoding.httpBody”切换为“JSONEncoding.default”即可解决问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2018-07-18
      • 2017-01-28
      相关资源
      最近更新 更多