[swift] Moya와 ObjectMapper을 이용하여 JSON 데이터를 모델에 매핑하는 예제 코드

이번 예제에서는 Moya와 ObjectMapper을 이용하여 JSON 데이터를 Swift 모델에 매핑하는 방법을 알아보겠습니다.

Moya와 ObjectMapper 설치하기

우선 Moya와 ObjectMapper을 설치해야 합니다. CocoaPods를 사용하신다면, Podfile에 다음과 같이 추가해주세요.

pod 'Moya'
pod 'ObjectMapper', '~> 4.0'

설치 후, pod install 명령어로 의존성을 설치합니다.

모델 클래스 작성하기

먼저, 매핑할 모델 클래스를 작성해보겠습니다. 예를 들어, JSON 데이터에서 사용자 정보를 가져와서 매핑하는 User 모델을 작성해보겠습니다.

import Foundation
import ObjectMapper

class User: Mappable {
    var id: Int?
    var name: String?

    required init?(map: Map) {
    }

    func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
    }
}

위의 코드에서 User 클래스는 Mappable 프로토콜을 채택하고 있습니다. 이 프로토콜을 구현하면서 map 함수에서 변수와 JSON 데이터의 키를 매핑합니다.

API 호출 및 모델 매핑하기

이제 Moya를 사용하여 API를 호출하고, ObjectMapper를 사용하여 JSON 데이터를 모델에 매핑해보겠습니다.

import Moya

let provider = MoyaProvider<API>()

provider.request(.getUser(id: 1)) { result in
    switch result {
    case let .success(response):
        do {
            let json = try response.mapJSON()
            if let user = Mapper<User>().map(JSONObject: json) {
                // 모델에 매핑된 데이터 사용하기
                print(user.id)
                print(user.name)
            }
        } catch let error {
            print("Error: \(error.localizedDescription)")
        }
    case let .failure(error):
        print("Error: \(error.localizedDescription)")
    }
}

위의 코드에서 MoyaProvider<API>()는 API 호출을 위한 provider 객체를 생성합니다. 그리고 .request(.getUser(id: 1))으로 API를 호출하고, 응답 데이터를 매핑합니다.

결론

Moya와 ObjectMapper을 이용하여 JSON 데이터를 모델에 매핑하는 예제 코드를 살펴보았습니다. 이를 통해 API 호출 및 데이터 매핑을 보다 효율적이게 처리할 수 있습니다.

참고 자료