[swift] Moya와 ObjectMapper를 사용하여 JSON 데이터를 모델로 변환하는 방법 및 예제 구현 설명

이번 글에서는 Moya와 ObjectMapper를 사용하여 JSON 데이터를 Swift 모델로 변환하는 방법에 대해 알아보겠습니다. Moya는 Swift용 네트워킹 라이브러리이며, ObjectMapper는 JSON 데이터를 Swift 모델로 매핑해주는 라이브러리입니다.

1. Moya와 ObjectMapper 설치하기

Moya와 ObjectMapper는 CocoaPods 또는 Swift Package Manager를 통해 설치할 수 있습니다. 아래의 명령어를 사용하여 설치해주세요.

CocoaPods를 사용하는 경우

pod 'Moya'
pod 'ObjectMapper'

Swift Package Manager를 사용하는 경우

dependencies: [
    .package(url: "https://github.com/Moya/Moya.git", from: "14.0.0"),
    .package(url: "https://github.com/tristanhimmelman/ObjectMapper.git", from: "4.2.0")
]

2. 모델 클래스 생성하기

먼저, JSON 데이터를 매핑할 Swift 모델 클래스를 생성해야 합니다. 예를 들어, 사용자 정보를 담을 User 모델 클래스를 만들어보겠습니다. 아래의 코드를 참고해주세요.

import ObjectMapper

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

    required init() {}

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

위 코드에서 Mappable 프로토콜을 채택하고, mapping(map:) 메서드를 구현하여 JSON 데이터의 각 필드를 모델 속성에 매핑합니다.

3. MoyaProvider 생성하기

MoyaProvider는 실제 API 요청을 처리하는 객체입니다. 아래의 코드를 참고하여 MoyaProvider를 생성해주세요.

import Moya

let provider = MoyaProvider<MyAPI>()

위 코드에서 MyAPI는 Moya에서 사용될 Target 타입입니다. 실제로 API 요청을 처리하는 함수들을 정의해야 합니다.

4. API 요청 및 JSON 데이터 매핑하기

이제 MoyaProvider를 사용하여 API 요청을 보내고, 받은 JSON 데이터를 모델로 매핑해보겠습니다. 아래의 코드를 참고해주세요.

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

위 코드에서 getUser(id:) 함수는 API의 실제 경로와 파라미터를 정의한 함수입니다. response.mapJSON() 메서드를 사용하여 받은 데이터를 JSON으로 변환하고, ObjectMapper의 map(JSONObject:) 메서드를 사용하여 JSON 데이터를 모델로 매핑합니다.

마무리

이번 글에서는 Moya와 ObjectMapper를 사용하여 JSON 데이터를 모델로 매핑하는 방법에 대해 알아보았습니다. 이를 활용하면 네트워크 요청 후 받은 JSON 데이터를 간편하게 Swift 모델로 변환할 수 있습니다.

더 자세한 내용은 MoyaObjectMapper의 공식 문서를 참고해주세요.