[swift] ObjectMapper를 사용하여 Swift 객체 간에 데이터를 어떻게 변환할 수 있나요?

Swift에서 데이터를 객체로 변환하거나 객체를 데이터로 변환하는 작업은 매우 흔한 작업입니다. ObjectMapper는 Swift에서 이러한 작업을 보다 간편하게 수행할 수 있도록 도와주는 라이브러리입니다.

먼저, ObjectMapper를 사용하기 위해서는 프로젝트에 ObjectMapper 라이브러리를 추가해야 합니다. CocoaPods를 사용한다면, Podfile에 다음과 같이 ObjectMapper를 추가해주세요.

pod 'ObjectMapper'

라이브러리를 추가하고 나면, Swift 클래스에서 ObjectMapper를 사용할 수 있게 됩니다. ObjectMapper를 사용하여 데이터와 객체를 변환하는 가장 일반적인 방법은 다음과 같습니다.

  1. JSON 데이터에서 객체로 변환하기
  2. 객체에서 JSON 데이터로 변환하기

1. JSON 데이터에서 객체로 변환하기

JSON 데이터에서 객체로 변환하는 경우에는 ObjectMapper의 map() 메서드를 사용합니다. 이 메서드는 JSON 데이터와 클래스 타입을 인자로 받아 해당 클래스의 객체로 변환해줍니다.

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

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

이 JSON 데이터를 기반으로 User 클래스를 정의해봅시다.

import ObjectMapper

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

User 클래스가 ObjectMapper의 Mappable 프로토콜을 구현하도록 만들었습니다. Mappable 프로토콜을 구현하면 required init?(map: Map) 메서드와 mapping(map: Map) 메서드를 구현해야 합니다. required init?(map: Map) 메서드는 ObjectMapper 내부에서 사용되며, mapping(map: Map) 메서드에서는 JSON 데이터의 각 필드를 해당 클래스의 프로퍼티에 매핑해줍니다.

이제, JSON 데이터를 User 객체로 변환하는 방법은 다음과 같습니다.

import ObjectMapper

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

if let user = Mapper<User>().map(JSONString: json) {
    print(user.name) // John Doe
    print(user.age) // 25
    print(user.email) // johndoe@example.com
}

JSON 데이터를 JSONString 형태로 Mapper<User>().map() 메서드에 전달하면, 해당 JSON 데이터가 User 객체로 변환됩니다.

2. 객체에서 JSON 데이터로 변환하기

객체에서 JSON 데이터로 변환하는 경우에는 ObjectMapper의 toJSON() 메서드를 사용합니다. 이 메서드는 객체를 JSON 데이터로 변환해줍니다.

User 클래스의 인스턴스를 JSON 데이터로 변환하는 방법은 다음과 같습니다.

import ObjectMapper

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

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

객체를 toJSON() 메서드에 전달하면, 해당 객체가 JSON 데이터로 변환됩니다.

이처럼 ObjectMapper를 사용하면 Swift 객체 간의 데이터 변환 작업을 편리하게 수행할 수 있습니다. ObjectMapper는 더 복잡한 변환 작업도 지원하므로 깊은 계층의 JSON 데이터나 다양한 형식의 데이터 변환이 필요한 경우에도 유용하게 사용할 수 있습니다.

자세한 내용은 ObjectMapper의 공식 문서를 참고하시기 바랍니다. (ObjectMapper 공식 문서)