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

이번 글에서는 Swift의 Moya와 ObjectMapper 라이브러리를 사용하여 JSON 응답을 모델 객체로 변환하는 코드를 구현하는 예시를 설명하려고 합니다.

Moya와 ObjectMapper 소개

프로젝트 설정

Moya와 ObjectMapper를 사용하기 위해 프로젝트에 Cocoapods를 통해 두 라이브러리를 설치해야 합니다. Podfile 파일을 열고 아래의 내용을 추가합니다.

pod 'Moya'
pod 'ObjectMapper'

프로젝트 루트 디렉토리에서 터미널을 열고 pod install 명령어를 실행합니다.

모델 객체 생성

Moya와 ObjectMapper를 사용하여 JSON 응답을 모델 객체로 변환하기 위해서는, 우선 변환할 모델 객체를 생성해야 합니다. 예시로 User 모델을 만들겠습니다.

import Foundation
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"]
    }
}

User 모델은 Mappable 프로토콜을 채택하고, id, name, email 속성을 가지고 있습니다. mapping 메서드에서는 JSON 키와 모델 속성을 매핑해줍니다.

네트워크 요청

이제 Moya를 사용하여 네트워크 요청을 수행하고, ObjectMapper를 사용하여 JSON 응답을 User 모델 객체로 변환해보겠습니다.

import Moya
import ObjectMapper

let provider = MoyaProvider<YourAPIService>()

provider.request(.getUser(id: 1)) { result in
    switch result {
    case let .success(response):
        do {
            let user = try response.mapObject(User.self)
            print(user)
        } catch {
            print(error.localizedDescription)
        }
    case let .failure(error):
        print(error.localizedDescription)
    }
}

위의 코드에서는 Moya의 MoyaProvider를 통해 네트워크 요청을 수행하고, 결과를 받아와서 ObjectMapper의 mapObject 메서드를 사용하여 JSON을 User 모델 객체로 변환합니다. 변환 결과는 user 상수에 저장되며, 이후 로직에서 활용할 수 있습니다.

결론

Moya와 ObjectMapper를 사용하여 JSON 응답을 모델 객체로 변환하는 방법에 대해 예시를 설명했습니다. 이를 통해 네트워크 요청과 JSON 매핑을 간편하게 처리할 수 있습니다. 두 라이브러리를 활용하여 손쉽게 Swift 앱 개발을 진행할 수 있습니다.


참고: