提问人:Azurlake 提问时间:11/9/2022 更新时间:11/9/2022 访问量:317
Alamofire swift 如何在 POST 请求中保留 JSON 密钥,即使值为 null / nil
Alamofire swift how to keep JSON keys in POST request even if value is null / nil
问:
我正在将 Alamofire 5.6.2 与以下 JSON 编码器一起使用:
let encoder = JSONParameterEncoder.json()
encoder.encoder.dateEncodingStrategy = .formatted(DateFormatter.standard)
encoder.encoder.keyEncodingStrategy = .convertToSnakeCase
然后在 POST 请求中使用它,如下所示:
let headers: HTTPHeaders = [
.authorization(bearerToken: token),
.accept("application/json"),
.contentType("application/json;charset=UTF-8"),
.acceptEncoding("utf-8")
]
AF.request(path, method: .post, parameters: data, encoder: encoder, headers: headers).validate().responseDecodable(of: R.self, decoder: decoder) { response in
switch response.result {
...
}
该参数是如下所示的对象:data
struct SampleRequest: Codable {
var param1: Bool
var param2: Float?
}
问题是,如果为 nil,则不会将密钥添加到请求正文中。这对我来说是一个问题,因为我的目标端点对不同的更新任务使用相同的请求流,并且它需要知道特定键是否为 nil,以便在后端将其设置为 null,或者它不存在,因此它不应该对它做任何事情。param2
我在正在使用的编码器上找不到任何选项,以便在值为 nil 时保留键。这怎么能实现呢?JSONParameterEncoder.json()
提前致谢
答: 暂无答案
评论
Foundation.JSONEncoder
Encodable