Swift
Codable - JSON 날짜 디코딩 쉽게 하기
hyeonii_12
2021. 5. 2. 21:59
반응형
Codable - JSON 날짜 디코딩 쉽게 하기
오늘은 Codable을 활용하여 JSON 디코딩을 할 때 알아두면 좋을 팁을 소개해드리려고 합니다!
예를 들어 아래와 같은 타입의 데이터가 있다고 가정해보겠습니다.
{
"name": "hyeon",
"createdAt": "2021-05-02T20:48:10"
}
보통 createdAt을 String으로 받고, DateFormatter로 date로 변환시켜서 사용하셨을 것 같습니다.
struct Info: Codable {
let name: String
let createdAt: String
}
// decode
let response = try JSONDecoder().decode(Info.self, from: data)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = dateFormatter.date(from: response.createdAt)
이렇게 date 값을 가지고 올 수 있었죠.
그렇다면 이번에는 새로운 방법이 있습니다.
Info의 createdAt을 아예 Date로 설정해서 디코딩할 때 바로 해당 형식으로 디코딩 될 수 있는데요.
struct DateInfo: Codable {
let name: String
let createdAt: Date
}
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let dateDecoder = JSONDecoder()
dateDecoder.dateDecodingStrategy = .formatted(dateFormatter)
let response = dateDecoder.decode(DateInfo.self, from: data)
DateFormatter 설정은 똑같이 진행하고,
Decoder에서 date decoding strategy를 해당 dateFormatter의 형식으로 할거다!!고 설정해주면
dateDecoder를 써서 디코딩을 하는 경우에는 Date를 전부 위의 형식으로만 받아들이게 된다는 것입니다!
물론 "2021-05-02 15:11" 처럼 다른 형식의 값이 오면 에러가 나겠지만요..
아주 간단하게 Date를 디코딩 하는 방법에 대해 알아보았습니다!
Codable은 정말 강력한 JSON Parsing 타입인데요, 이 (저한테만 새로운) 기능을 통해서 더욱 편리하게 코더블을 사용하시길 바랍니다!
반응형