如何解决尝试将 Json 数据解析为模型类,在使用 codable 时出现此错误
尝试将 Json 数据解析为模型类“TimeSheetModel”时出现以下错误。
typeMismatch(Swift.String,Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "error",intValue: nil)],debugDescription: "预期解码字符串,但找到了字典。",底层错误:nil))
响应数据 Json
{
"code": 200,"message": null,"error": null,"data": {
}
}
// MARK: - TimeSheetModel
struct TimeSheetModel: Codable {
let code: Int?
let message: String?
let error: String?
let timeSheetModel_Data: TimeSheetModel_Data?
enum CodingKeys: String,CodingKey {
case code = "code"
case message = "message"
case error = "error"
case timeSheetModel_Data = "data"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
code = try values.decodeIfPresent(Int.self,forKey: .code)
message = try values.decodeIfPresent(String.self,forKey: .message)
error = try values.decodeIfPresent(String.self,forKey: .error)
timeSheetModel_Data = try values.decodeIfPresent(TimeSheetModel_Data.self,forKey: .timeSheetModel_Data)
}
}
如果在可编码模型类中对字符串和 Int 进行其他编码,可能我必须处理。
解决方法
正如错误所说:let error: String?
错误属性应该是 String
类型 - 但服务器会在那里返回 Dictionary
。
您发布的 JSON 似乎有 null
,但可能由于不同的 JSON 数据而显示错误 - 具有 error
对象的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。