我需要帮助用Alamofire 5解码json数据。我对这个数组感到困惑,我无法解码.
[
{
"Date": "2022-08-08T00:00:00",
"Day": "Fri",
"AbsenceCount": 0,
"AbsenceRequestComments": "Request permitted",
"Color": "No",
"IsRequestPermitted": true
},
{
"Date": "2022-09-09T00:00:00",
"Day": "Sat",
"AbsenceCount": 0,
"AbsenceRequestComments": "Request permitted",
"Color": "No",
"IsRequestPermitted": true
},
{
"Date": "2022-12-15T00:00:00",
"Day": "Sun",
"AbsenceCount": 0,
"AbsenceRequestComments": "Request permitted",
"Color": "No",
"IsRequestPermitted": true
}
]我正在尝试从这个堆叠溢出,没有发现什么对我的案件有帮助。此外,我还尝试了responseString,responseData,responseJSON和最终responseDecodableOf的可编码模型。
let request = AF.request(requestURL, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: returnHeader())
.validate()
.responseDecodable(of: [CoverCheckForDay].self) { response in
switch response.result {
case .success:
guard let value = response.value else { failure(""); return }
success(value)
case .failure(let error):
failure(error.localizedDescription)
}
}我的模型
struct CoverCheckForDay: Codable {
let date: String
let day: String
let absenceCount: Int
let absenceRequestComments: String
let color: String
let isRequestPermitted: Bool
enum CodingKeys: String, CodingKey {
case date = "Date"
case day = "Day"
case absenceCount = "AbsenceCount"
case absenceRequestComments = "AbsenceRequestComments"
case color = "Color"
case isRequestPermitted = "IsRequestPermitted"
}
}我得到了无效类型的错误,在responseString的情况下,我也有一些字符串:"\“。仅此而已,我会非常感谢你的帮助,谢谢!
编辑:来自阿拉莫火的错误
▿ Optional<AFError>
▿ some : AFError
▿ responseSerializationFailed : 1 element
▿ reason : ResponseSerializationFailureReason
▿ decodingFailed : 1 element
▿ error : DecodingError
▿ typeMismatch : 2 elements
- .0 : Swift.Array<Any>
▿ .1 : Context
- codingPath : 0 elements
- debugDescription : "Expected to decode Array<Any> but found a string/data instead."
- underlyingError : nil我的参数:
▿ 3 elements
▿ 0 : 2 elements
- key : "employeeId"
- value : 13558
▿ 1 : 2 elements
- key : "dates"
▿ value : 3 elements
▿ 0 : CoverRequestArray
▿ date : Optional<String>
- some : "01/09/2022"
▿ day : Optional<String>
- some : "Thu"
▿ 1 : CoverRequestArray
▿ date : Optional<String>
- some : "02/09/2022"
▿ day : Optional<String>
- some : "Fri"
▿ 2 : CoverRequestArray
▿ date : Optional<String>
- some : "03/09/2022"
▿ day : Optional<String>
- some : "Sat"
▿ 2 : 2 elements
- key : "siteId"
- value : 440发布于 2022-08-25 10:32:28
所以男生的问题是在服务器端,我想是错误的方法。来自side 的后端开发人员确实获得了带有输入数据体的方法。网站称,从2019年起,苹果就违反了用GET发送身体数据的行为。
谢谢大家的回答,所以偶尔是我的失败,我没有先检查一下。
邮递员屏幕:

发布于 2022-08-23 18:38:33
你为什么不试试像这样解码:
在您的文件中,但在您的结构之外添加:
typealias CoverCheck = [CoverCheckForDay]并解码如下:
AF.request(requestURL, method: .get)
.response{ response in
switch response.result {
case .success(let data):
let newJSONDecoder = JSONDecoder()
if let result = try? newJSONDecoder.decode(CoverCheck.self, from: data!){
print(result)
}
case .failure(let error):
print(error)
}
}发布于 2022-08-23 19:19:57
您的输出是一个空字符串,您的自定义奇数失败值。
问题是success案件的处理是错误的。
.success有一个非可选的关联值,如.failure,它是已解码的对象。
将代码更改为以下内容
.responseDecodable(of: [CoverCheckForDay].self) { response in
switch response.result {
case .success(let coverCheckArray):
success(coverCheckArray)https://stackoverflow.com/questions/73463324
复制相似问题