HIT해

[Swift 기초문법 - 34] Codable 본문

Swift/Swift 기초문법

[Swift 기초문법 - 34] Codable

힛해 2024. 8. 14. 07:03
728x90

Codable이란?

JSON형태의 타입을 Decode Encode 하게 하는 프로토콜

decode - JSON to struct || class

encode - struct || class to JSON 

typealias Codable = Decodable & Encodable

 

사용예시

let jsonFromServer = """
{
	"nick_name" : "자우림"
    "job" : "singer"
    "user_name" : "2125"
}
"""

struct User : Codable {
	var nickname : String
    var job : String
    var myUserName : String
    
    enum CodingKeys : String, CodingKey{
    	case nickname = "nick_name"
        case job
        case myUserName = "user_name"
    }
    
    static func getUserFromJson(_ jsonString: String) -> Self { // 대문자면 자기 자신을 타입으로 사용
    	guard let jsonData : Data = jsonFromServer.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)

 

Tip.

보통은 var 에 옵셔널을 붙이는게 좋다.