Search

Swift에서 JSON 키와 모델 프로퍼티 매핑하기 - CodingKey

Swift에서 API로부터 JSON 데이터를 받아와 앱 내에서 사용하기 위해 우리는 종종 Decodable 프로토콜을 구현하는 모델을 정의한다. 오늘은 Decodable 구현 시에 매우 유용한 CodingKeys 열거형에 대해 자세히 알아보고자 한다.

CodingKey란?

CodingKeyDecodable 또는 Encodable 프로토콜을 사용할 때 JSON 키와 Swift 모델의 프로퍼티가 서로 일치하지 않을 경우 이를 연결하기 위해 사용하는 열거형이다. 예를 들어, 서버로부터 받은 JSON 데이터 내에는 stargazers_count라는 키가 있지만 Swift 코드 내에서는 stargazersCount라는 프로퍼티로 사용하고 싶은 경우가 이에 해당한다.
let stargazersCount: Int
Swift
복사

사용 예시

Repository라는 구조체를 정의하고 이를 Decodable 프로토콜에 따라 구현해보자. 이 구조체는 GitHub의 리포지토리 정보를 담고 있으며 다음과 같이 구성된다.
struct Repository: Decodable { let id: Int let name: String let description: String let stargazersCount: Int let language: String enum CodingKeys: String, CodingKey { case id, name, description, language case stargazersCount = "stargazers_count" } }
Swift
복사
여기서 CodingKeys 열거형은 JSON 키 값인 stargazers_count를 Swift 모델의 stargazersCount 프로퍼티에 할당하도록 명시한다. 이런 방식은 데이터의 키와 프로퍼티 이름이 다를 때 유용하게 사용된다.

CodingKey 사용의 이점

명확성
유지보수성
타입 안정성
데이터와 모델 간의 연결이 명확해지므로 다른 개발자가 코드를 볼 때 이해하기 쉬우며 모델의 프로퍼티 이름이나 JSON 키가 변경되어도 쉽게 대응할 수 있다. 또, 컴파일 시점에 프로퍼티 매핑 오류를 발견할 수 있어 런타임 에러의 가능성을 줄여준다.

결론

CodingKey를 활용하는 것은 Swift에서 JSON 파싱을 보다 안정적이고 관리하기 쉽게 만든다. 이는 단지 코드를 깔끔하게 유지하는 것을 넘어서 실제 앱 개발에서 발생할 수 있ㄴ는 여러 문제를 예방할 수 있는 방법론이다.