我如何将JSON中的日期字符串解码为Date对象?

我如何从JSON中解码时间戳到Date?

我从服务器上得到了我的日期,就像这样的Json。

{

        "date": "2610-02-16T03:16:15.143Z"

    }

我试图从它建立一个Date类。

class Message : Decodable {

  var date: Date

}

它没有按照预期工作,我得到了这个错误。

Failed to fetch messages: typeMismatch(Swift.Double, Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "date", intValue: nil)], debugDescription: "Expected to decode Double but found a string/data instead.", underlyingError: nil))

解决方案:

当解码这样的日期信息时,你需要使用一个自定义的 “日期 “类。dateDecodingStrategy并设置日期解析器的时区和地域。

let data = """
{
    "date": "2610-02-16T03:16:15.143Z"
}
""".data(using: .utf8)!

struct Message: Codable {
    let date: Date
}

let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(identifier: "GMT")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(formatter)

do {
  let message = try decoder.decode(Message.self, from: data)
  print(message.date)
} catch {
  print(erroor)
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

ssl.CertificateError: hostname 'example.com' doesn't match either of 'exampleserver.com'?

2022-9-10 20:54:26

未分类

在路由器或vue应用程序内的组件中读取cookie。

2022-9-10 20:54:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索