Swift에서 데이터를 객체로 변환하거나 객체를 데이터로 변환하는 작업은 매우 흔한 작업입니다. ObjectMapper는 Swift에서 이러한 작업을 보다 간편하게 수행할 수 있도록 도와주는 라이브러리입니다.
먼저, ObjectMapper를 사용하기 위해서는 프로젝트에 ObjectMapper 라이브러리를 추가해야 합니다. CocoaPods를 사용한다면, Podfile에 다음과 같이 ObjectMapper를 추가해주세요.
pod 'ObjectMapper'
라이브러리를 추가하고 나면, Swift 클래스에서 ObjectMapper를 사용할 수 있게 됩니다. ObjectMapper를 사용하여 데이터와 객체를 변환하는 가장 일반적인 방법은 다음과 같습니다.
- JSON 데이터에서 객체로 변환하기
- 객체에서 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 공식 문서)