ios - 尝试将 Json 数据解析到模型类中,使用可编码时出现错误
问题描述
试图将 Json 数据解析为模型类“TimeSheetModel”我遇到了错误。
typeMismatch(Swift.String, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "error", intValue: nil)], debugDescription: "期望解码字符串,但找到了字典。",underlyingError: 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
对象。
推荐阅读
- r - 'RColourBrewer' 不可用(对于 R 版本 3.6.1)
- excel - SAP通过VBA提取到EXCEL内存不足
- python - 给定索引ndarray和标志ndarray的任何numpy/torch样式设置值?
- redis - 如何获取redis中哈希字段对的总数
- android - 在 Android 中使用 Kotlin 的 Promise
- c# - 无法找到一些旧代码的参考
- bash - Bash 脚本 Perf Stat 到 CSV
- python - 根据两列值查找行的位置
- cdi - 在 junit5 测试类中,weldinitator 配置可以特定于每种测试方法吗?
- xamarin.forms - Xamarin 表单:Listview 分组问题