Expected date string to be ISO8601-formatted

在iOS开发中,当从后端接收到ISO8601格式的日期字符串时,通常会使用JSONDecoder进行解析。但若遇到空字符串,会导致'Expected date string to be ISO8601-formatted'的错误。解决方法是在模型定义中加入可选处理,如将Date类型改为Date?,从而避免解析空值时的错误。
摘要由CSDN通过智能技术生成

我们定义一个 time 类型为 Date

例如:

struct SessionTime: Codable {
    let sessionStartTime: Date?
    let sessionEndTime: Date?
    let newSessionStartTime: Date?
    let newSessionEndTime: Date?
}

并且在解析的时候,后端返回我们的都是 ISO8601 类型,这个时候,我们只需要定义一下 decoder 一下就可以:

lazy var jsonDecoder: JSONDecoder = {
        let decoder = JSONDecoder()
        decoder.keyDecodingStrategy = .convertFromSnakeCase
        decoder.dateDecodingStrategy = .iso8601
        return decoder
    }()

然而,这些Date有可能偶尔没有值,这个之后如果后端返回给我们 “”的话,用 jsonDecoder 解析时就会报错:Expected date string to be ISO8601-formatted

后端返回:

"session_start_time"    : "2019-12-03T16:00:00+00:00",
"session_end_time"      : "2019-12-03T17:00:00+0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值