[iOS] Codable로 JSON decoding하기

Swift에서 JSON을 decoding 해보자

이승연
3 min readNov 2, 2018
Photo by Yura Fresh on Unsplash

현재 진행 중인 사이드 프로젝트에서 Firebase를 걷어내고 node.js로 RESTful API를 만들어 대체했습니다. 이 API에서 받은 JSON을 decoding 할 때 삽질한 과정을 정리하고 공유하고자합니다. 혹시라도 잘못된 부분이 있다면 알려주시면 감사하겠습니다.

우선 제가 사용한 JSON입니다. array로 감싸져있는 형태입니다.

Codable이란?

Codable은 Swift 4.x에서 등장한 프로토콜입니다. Codable을 이용하면 JSON decoding 및 encoding이 가능합니다. 저는 decoding만 해봤기 때문에 이 글에서는 decoding에 대해서만 다루겠습니다.

Struct 생성하기

먼저 API로 받아온 JSON을 넣어줄 Struct를 생성해야하는데 Struct 안의 변수명을 지을 때는 어떤 방법을 쓸 것인지를 고려하고 이름을 지어야합니다.

  1. CodingKey
  2. keyDecodingStrategy

이렇게 두가지 방법이 있습니다. 먼저 CodingKey에 대해서 알아보겠습니다.

CodingKey

CodingKey 프로토콜을 사용하여 Enum으로 키의 이름을 재설정하는 방법입니다. stadium의 경우처럼 JSON key값을 그대로 사용할 경우에는 Enum에 아무것도 적어주지 않아도 무방합니다.

keyDecodingStrategy

keyDecodingStrategy를 이용하여 snake_case에서 CamelCase로 변환시켜주는 방법입니다. 이 경우에는 구조체 안의 변수명을 JSON key값을 CamelCase로 변환한 값과 일치하게 적어야합니다.

전체 코드

keyDecodingStrategy, URLSession을 이용하여 JSON decode 후 Realm에 저장하는 코드입니다.

--

--