[TIL] CodingKey

박주하·2025년 7월 10일

CodingKey


  • Codable을 사용할 때 JSON 키와 Swift 프로퍼티 이름이 다를 때 이를 연결(매핑)해주는 역할

💡 Codable란??

  • Encodable + Decodable 프로토콜
  • Swift 객체를 JSON으로 변환하거나(JSON 인코딩),
    JSON을 Swift 객체로 변환하는(JSON 디코딩) 데 사용

문제 상황

// JSON
{
  "id": 123,
  "first_name": "Luna",
  "last_name": "Park"
}

// Swift 객체
struct Person: Codable {
	let id: Int
    let firstName: String
    let lastName: String
}

오류 발생🚨

  • JSON은 "first_name"인데, firstName으로 작성했기 때문❗️
  • JSON의 키와 Swift의 변수명이 다르면 Swift는 기본적으로 변환을 못함
    → 이때 바로 CodingKey로 문제 해결👍

해결 방법

// Swift 객체
struct Person: Codable {
	let id: Int
    let firstName: String
    let lastName: String
    
    // CodingKey 사용
    enum CodingKeys: String, CodingKey {
    	case id
        case firstName = "first_name"
        case lastName = "last_name"
    }
}
Swift 속성명JSON 키
id"id" (같으면 굳이 매핑 안 해도 됨)
firstName"first_name"
lastName"last_name"

CodingKey 없이 자동 매핑도 가능❗️

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
  • 이렇게 하면 "first_name"firstName으로 자동 매핑해줌
  • snake_case 자동 매핑
  • 하지만, 복잡하거나 예외적인 키는 여전히 CodingKeys로 따로 지정해야 함

0개의 댓글