微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试将 Json 数据解析为模型类,在使用 codable 时出现此错误

如何解决尝试将 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 举报,一经查实,本站将立刻删除。