제라스의 iOS 공부/Swift 문법
[Swift 문법] Codable
Xerath(제라스)
2023. 8. 18. 12:49
728x90
반응형
Codable은 무엇일까?
-> Encodable과 Decodable을 합친 프로토콜이다.
그럼 걔네는 뭔데??
- Decodable은 JSON을 일반 값들로 추출된 객체
- Encodable은 JSON으로 변환된 객체
일단 예시로 보자.
import UIKit
let jsonFromServer = """
{
"name": "윤동주"
"job": "대학생",
"nickname": "Xerath",
}
"""
// de code = 제이슨을 클래스, 스트럭트로 바꾸기
// en code = 제이슨으로 만들기
//EnCodable & Decodable
struct User : Decodable {
var nickname: String?
var job: String
var myUserName: String
// 이렇게 CodingKey로 enum을 설정해서 각 키를 어떻게 받아올지 적어줘야 추출이 가능하다.
enum CodingKeys: String, CodingKey {
case nickname = "name"
case job
case myUserName = "nickname"
}
static func getUserFromJson(_ jsonString: String) -> Self? {
guard let jsonData : Data = jsonString.data(using: .utf8) else {
return nil
}
do {
let user = try JSONDecoder().decode(User.self, from: jsonData)
print("user: \(user)")
return user
} catch {
print("에러발생: \(error.localizedDescription)")
return nil
}
}
}
let user = User.getUserFromJson(jsonFromServer)
728x90
반응형