Ios 试图将Json数据解析到模型类中,在使用codable时出现此错误
试图将Json数据解析到模型类“TimeSheetModel”中,我遇到了以下错误 类型不匹配(Swift.String,Swift.DecodingError.Context(codingPath:[CodingKeys(stringValue:“error”,intValue:nil)],debugDescription:“应解码字符串,但找到字典。”,underlineerror:nil)) 响应数据JsonIos 试图将Json数据解析到模型类中,在使用codable时出现此错误,ios,swift,codable,Ios,Swift,Codable,试图将Json数据解析到模型类“TimeSheetModel”中,我遇到了以下错误 类型不匹配(Swift.String,Swift.DecodingError.Context(codingPath:[CodingKeys(stringValue:“error”,intValue:nil)],debugDescription:“应解码字符串,但找到字典。”,underlineerror:nil)) 响应数据Json { "code": 200, "m
{
"code": 200,
"message": null,
"error": null,
"data": {
}
}
//马克:-时间表模型
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)
}
}
可能是我必须在可编码模型类中处理if-else对字符串和Int进行编码。正如错误所说:
让错误:字符串?
错误属性应该是字符串
类型-但服务器在那里返回字典
您发布的JSON在那里似乎有null
,但可能是由于不同的JSON数据而显示错误-其中有error
对象。您确定这是从服务器接收的JSON数据吗?您显示了一个空值(这对于字符串来说是可以的),但是错误表明您收到了一个字典。您不需要自定义init
;默认的行为应该能帮到你。是的,我正在从服务器端接收到消息。你能不能不要只是catch{print(error)}
,而是catch{print(“JSON解码时出错:\(error)”,响应:\(字符串(数据:数据,编码:.utf8)))
?您似乎认为这就是您得到的JSON,但根据错误,它不是,所以在失败时打印JSON。是的!您是正确的。