[swift] ObjectMapper를 사용하여 JSON 데이터를 필요한 양식으로 변환하는 방법은?

JSON 데이터를 Swift 객체로 변환하거나 Swift 객체를 JSON 형식으로 직렬화하는 작업은 매우 일반적입니다. 이를 위해 ObjectMapper 라이브러리를 사용할 수 있습니다. ObjectMapper는 Swift에서 JSON을 처리하기 위한 강력하고 유연한 라이브러리로 많이 사용됩니다.

ObjectMapper 설치

먼저 ObjectMapper를 설치해야 합니다. Swift 프로젝트에서 CocoaPods를 사용한다면 Podfile에 다음 줄을 추가하고 pod install 명령어를 실행하세요.

pod 'ObjectMapper'

Swift 패키지 매니저를 사용하는 경우 Package.swift 파일의 dependencies 섹션에 다음과 같이 추가하세요.

.package(url: "https://github.com/tristanhimmelman/ObjectMapper.git", from: "4.0.0")

설치가 완료되면 Swift 파일의 상단에 ObjectMapper를 import하세요.

import ObjectMapper

JSON 데이터를 객체로 변환하기

JSON 데이터를 Swift 객체로 변환하려면 ObjectMapper의 map 메서드를 사용해야 합니다. 먼저 JSON 데이터가 저장된 딕셔너리를 가져와야 합니다.

예를 들어, 다음과 같은 JSON 데이터가 있다고 가정해 봅시다.

{
    "name": "John Doe",
    "age": 25,
    "email": "johndoe@example.com"
}

그리고 해당 JSON 데이터를 Swift 객체로 변환하려면 다음과 같이 작성할 수 있습니다.

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

    required init?(map: Map) {}

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

// JSON 딕셔너리
let json: [String: Any] = [
    "name": "John Doe",
    "age": 25,
    "email": "johndoe@example.com"
]

// ObjectMapper의 map 메서드를 사용하여 JSON을 User 객체로 변환
if let user = Mapper<User>().map(JSON: json) {
    print(user.name) // John Doe
    print(user.age) // 25
    print(user.email) // johndoe@example.com
}

위의 코드에서 User 클래스는 Mappable 프로토콜을 구현했습니다. Mappable 프로토콜을 구현하는 것은 ObjectMapper에 필요한 맵핑 로직을 추가하는 것입니다. mapping(map:) 메서드를 사용하여 JSON 키와 속성을 매핑합니다. required init?(map: Map) 메서드는 ObjectMapper가 객체를 만들 때 사용됩니다.

객체를 JSON 데이터로 직렬화하기

Swift 객체를 JSON 데이터로 직렬화하려면 ObjectMapper의 toJSON 메서드를 사용해야 합니다. 아래 코드에서 JSON에 변환할 User 객체를 만든 다음 ObjectMapper의 toJSON 메서드를 사용하여 JSON 데이터로 변환합니다.

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

    required init?(map: Map) {}

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

let user = User()
user.name = "John Doe"
user.age = 25
user.email = "johndoe@example.com"

if let json = Mapper().toJSON(user) {
    print(json)
    // {
    //    "name": "John Doe",
    //    "age": 25,
    //    "email": "johndoe@example.com"
    // }
}

위의 코드에서 toJSON 메서드는 Swift 객체를 JSON 데이터로 직렬화하여 딕셔너리로 반환합니다.

결론

Swift에서 ObjectMapper를 사용하여 JSON 데이터를 Swift 객체로 변환하거나, Swift 객체를 JSON 데이터로 직렬화하는 방법을 알아보았습니다. ObjectMapper는 JSON 처리를 더욱 간편하고 편리하게 해주는 유용한 라이브러리입니다. ObjectMapper의 풍부한 기능을 활용하여 코드를 작성하면 JSON 처리 작업을 더욱 쉽게 할 수 있습니다.