codable

작성일

codable

import Foundation
/// """ 따옴표를 3개 사용하면 안에 따옴표도 같이 처리 가능하다.
let jsonFromServer = """
{
    "nick_name": "최재권",
    "job": "취준생",
    "user_name": "choi"
}
"""

// 코더블을 통해 제이슨 데이터를 클래스 혹은 스트럭트 인스턴스로 생성이 가능하다.
struct User: Codable {
    var nickname:String
    var job:String
    var myUserName:String
    // 이때는 파싱하는 제이슨의 키와 멤버 변수의 이름이 일치해야한다.
    // 하지만, 아래와 같이 코딩키를 이용하면 변경이 가능하다.
    enum CodingKeys: String, CodingKey {
        case nickname = "nick_name"
        // 제이슨 user_name 키를 myUserName 이라는 이름으로 받겠다고 설정.
        case myUserName = "user_name"
        case job
    }
}

//제이슨 스트링을 데이터로 만들기
let jsonData: Data = jsonFromServer.data(using: .utf8)!

do {
    //제이슨 디코더를 통해 제이슨 데이터로 유저 인스턴스를 생성!
    //try catch로 에러 처리
    let user = try JSONDecoder().decode(User.self, from: jsonData)
    print("user: \(user)")
} catch {
    print("에러 발생! \(error.localizedDescription)")
}

출력

user: User(nickname: "최재권", job: "취준생", myUserName: "choi")

같이 보면 좋은 블로그