[swift] Moya와 ObjectMapper를 활용한 JSON 응답을 모델 객체로 변환하는 코드 구현 예시 설명

소개

Moya는 Alamofire를 기반으로한 네트워크 추상화 라이브러리입니다. ObjectMapper는 Swift에서 JSON 데이터를 모델 객체로 변환하는 라이브러리입니다. 이 두 라이브러리를 함께 사용하면 서버로부터 받은 JSON 응답을 손쉽게 모델 객체로 변환할 수 있습니다.

설치

먼저 Cocoapods를 통해 Moya와 ObjectMapper를 설치합니다. Podfile에 다음과 같이 추가합니다.

pod 'Moya'
pod 'ObjectMapper'

그리고 터미널에서 다음 명령어를 실행하여 의존성을 설치합니다.

$ pod install

코드 구현

  1. 먼저 모델 클래스를 만듭니다. 예시로 User 모델을 만들어보겠습니다.
import ObjectMapper

struct User: Mappable {
    var id: Int?
    var name: String?
    var email: String?

    init?(map: Map) {}
    
    mutating func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
        email <- map["email"]
    }
}
  1. 다음으로 Moya의 Provider를 생성합니다. 예시로 GitHubProvider를 생성해보겠습니다.
import Moya

let GitHubProvider = MoyaProvider<GitHubAPI>()
  1. 네트워크 요청을 보내고 응답을 수신하는 코드를 작성합니다.
GitHubProvider.request(.getUser(id: "1")) { result in
    switch result {
    case .success(let response):
        do {
            let user = try response.mapObject(User.self)
            print(user)
        } catch {
            print(error)
        }
    case .failure(let error):
        print(error)
    }
}

위의 코드에서 getUser는 API endpoint로 사용자 정보를 가져오는 메소드입니다. 응답이 성공적으로 도착하면 response.mapObject(User.self)를 통해 JSON 응답을 User 모델로 매핑합니다. mapObject는 ObjectMapper 프레임워크의 메소드입니다.

결론

Moya와 ObjectMapper를 함께 사용하면 JSON 응답을 모델 객체로 쉽게 변환할 수 있습니다. Moya는 네트워크 요청을 추상화하여 편리하게 다룰 수 있게 해주고, ObjectMapper는 JSON 데이터를 모델로 변환하는 데 도움을 줍니다. 이 두 라이브러리를 통해 코드 간소화와 유지보수성 향상을 할 수 있습니다.

참고 자료