[swift] Moya와 ObjectMapper를 사용하여 JSON 응답을 모델로 변환하는 방법과 코드 예제

1. Moya와 ObjectMapper란?

Moya는 Swift에서 네트워크 작업을 처리하기 위한 추상화된 네트워크 라이브러리입니다. Moya는 Alamofire를 기반으로 만들어져 있으며, 네트워크 작업을 쉽게 구조화하고 추상화할 수 있는 강력한 도구입니다.

ObjectMapper는 Swift에서 JSON 데이터를 모델 객체로 변환하기 위한 라이브러리입니다. ObjectMapper를 사용하면 JSON 데이터를 손쉽게 파싱하여 Swift 객체로 변환할 수 있습니다.

Moya와 ObjectMapper를 함께 사용하면 네트워크 요청을 통해 받은 JSON 응답을 자동으로 모델 객체로 변환할 수 있습니다.

2. Moya와 ObjectMapper 설정하기

Moya와 ObjectMapper를 사용하기 위해서는 먼저 프로젝트에 해당 라이브러리들을 추가해야 합니다.

Moya를 설치하기 위해서는 CocoaPods를 이용할 수 있습니다. Podfile에 다음과 같이 추가합니다.

pod 'Moya'

ObjectMapper는 Moya와 함께 사용하기 위해 별도로 설치할 필요가 없습니다. 대부분의 경우 Moya 또는 Alamofire 설치시 함께 설치됩니다.

3. JSON 응답을 모델로 변환하기

Moya와 ObjectMapper를 사용하여 JSON 응답을 모델로 변환하는 방법은 다음과 같습니다.

  1. 모델 클래스를 생성합니다. 이 클래스는 ObjectMapper의 Mappable 프로토콜을 준수해야 합니다. 예를 들어, JSON 응답의 구조에 따라 User 클래스를 생성할 수 있습니다.
import ObjectMapper

class User: Mappable {
    var name: String?
    var email: String?
    
    required init?(map: Map) { }
    
    func mapping(map: Map) {
        name <- map["name"]
        email <- map["email"]
    }
}
  1. Moya의 provider를 생성하여 API 요청을 수행합니다. 이때, .mapObject()를 사용하여 JSON 응답을 모델 객체로 변환합니다.
import Moya

let provider = MoyaProvider<API>()

provider.request(.getUser(id: 1)) { result in
    switch result {
    case .success(let response):
        do {
            let user = try response.mapObject(User.self)
            print(user.name)
            print(user.email)
        } catch {
            // JSON 파싱 실패
            print(error)
        }
    case .failure(let error):
        // 네트워크 요청 실패
        print(error)
    }
}

이처럼 Moya와 ObjectMapper를 조합하여 JSON 응답을 모델로 변환할 수 있습니다.

4. 마무리

Moya와 ObjectMapper를 사용하면 Swift에서 JSON 응답을 간편하게 모델 객체로 변환할 수 있습니다. Moya는 네트워크 요청을 추상화하여 구조화하고, ObjectMapper는 JSON 데이터를 모델 객체로 변환하는 데에 유용한 도구입니다. 이 두 라이브러리를 함께 사용하면 효율적으로 JSON 응답을 처리할 수 있습니다.

더 많은 사용법과 기능에 대해서는 Moya와 ObjectMapper의 공식 문서를 참고하시기 바랍니다.