[swift] Moya와 ObjectMapper를 사용하여 JSON 데이터를 모델로 변환하는 코드 예제
이번 글에서는 Swift에서 Moya와 ObjectMapper를 사용하여 JSON 데이터를 모델로 변환하는 방법에 대해 알아보겠습니다.
1. Moya와 ObjectMapper 추가
먼저, 이 작업을 수행하기 위해 Moya와 ObjectMapper를 프로젝트에 추가해야 합니다.
// Podfile
platform :ios, '10.0'
target 'YourTargetName' do
use_frameworks!
pod 'Moya', '~> 15.0'
pod 'ObjectMapper', '~> 4.0'
# 다른 팟들 추가 가능
end
터미널에서 pod install
명령어를 실행하여 의존성을 설치합니다.
2. 모델 클래스 생성
다음으로, JSON 데이터를 변환할 모델 클래스를 생성해야 합니다.
import Foundation
import ObjectMapper
class User: Mappable {
var id: Int?
var name: String?
var email: String?
required init?(map: Map) {}
func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
email <- map["email"]
}
}
위의 예제에서는 User
라는 모델 클래스를 생성하였습니다. Mappable
프로토콜을 채택하고, id
, name
, email
프로퍼티를 정의하였습니다. mapping(map:)
메서드를 통해 JSON 데이터의 키와 모델 클래스의 프로퍼티를 매핑합니다.
3. MoyaProvider를 사용하여 API 요청하기
이제 MoyaProvider를 사용하여 API 요청을 보낼 수 있습니다. 다음은 예제입니다.
import Moya
let provider = MoyaProvider<API>()
enum API {
case getUser(id: Int)
}
extension API: TargetType {
var baseURL: URL {
return URL(string: "https://api.example.com")!
}
var path: String {
switch self {
case .getUser(let id):
return "/users/\(id)"
}
}
var method: Moya.Method {
return .get
}
var sampleData: Data {
// API 응답 예제 데이터
return Data()
}
var task: Task {
return .requestPlain
}
var headers: [String: String]? {
return nil
}
}
// API 요청
provider.request(.getUser(id: 1)) { result in
switch result {
case let .success(response):
do {
let user = try response.mapObject(User.self)
// 모델로 변환한 데이터 사용
} catch {
// 변환 실패 처리
}
case let .failure(error):
// 요청 실패 처리
}
}
위의 예제에서는 MoyaProvider
의 request(_:completion:)
메서드를 사용하여 /users/1
에 대한 GET 요청을 보냅니다. 응답을 받으면 response.mapObject(_:completion:)
메서드를 사용하여 JSON 데이터를 User
모델로 변환합니다.
이렇게 JSON 데이터를 모델로 변환할 수 있습니다. Moya와 ObjectMapper는 강력한 도구들이므로 프로젝트에 적용해 보시기 바랍니다.