[swift] ObjectMapper를 사용하여 JSON 데이터를 다양한 객체에 매핑하는 방법은?

Swift에서 ObjectMapper는 JSON 데이터를 Swift 객체로 매핑하기 위한 훌륭한 라이브러리입니다. JSON 데이터를 파싱하고 객체로 변환하는 과정을 간단하게 처리할 수 있습니다.

이 글에서는 ObjectMapper를 사용하여 JSON 데이터를 다양한 객체에 매핑하는 과정을 설명하겠습니다.

ObjectMapper 설치

먼저, ObjectMapper를 설치해야 합니다. ObjectMapper는 CocoaPods를 통해 설치할 수 있습니다. Podfile에 다음 라인을 추가하고 pod install을 실행하여 설치합니다.

pod 'ObjectMapper'

객체 정의

객체에 JSON 데이터를 매핑하기 위해서는 객체의 프로퍼티를 JSON 데이터의 키와 매칭해야 합니다.

예를 들어, 다음과 같이 User 객체를 정의하고 프로퍼티와 JSON 데이터의 키를 매칭합니다.

import ObjectMapper

class User: Mappable {
    var name: String?
    var age: Int?
    
    required init?(map: Map) {}
    
    func mapping(map: Map) {
        name <- map["name"]
        age <- map["age"]
    }
}

위의 예제에서 nameage 프로퍼티는 JSON 데이터의 nameage 키와 매칭됩니다.

매핑하기

이제 ObjectMapper를 사용하여 JSON 데이터를 객체로 매핑할 수 있습니다.

import ObjectMapper

let jsonString = """
{
    "name": "John Doe",
    "age": 30
}
"""

if let user = Mapper<User>().map(JSONString: jsonString) {
    print(user.name) // John Doe
    print(user.age) // 30
}

위의 예제에서 Mapper<User>().map(JSONString: jsonString) 코드는 JSON 문자열을 User 객체로 매핑합니다. 매핑 결과는 옵셔널이므로, nil 체크를 해주어야 합니다.

배열 매핑하기

ObjectMapper를 사용하여 JSON 배열을 매핑하는 것도 가능합니다.

예를 들어, 다음과 같이 User 객체의 배열을 매핑하는 예제를 살펴보겠습니다.

import ObjectMapper

let jsonString = """
[
    {
        "name": "Alice",
        "age": 25
    },
    {
        "name": "Bob",
        "age": 35
    }
]
"""

if let users = Mapper<User>().mapArray(JSONString: jsonString) {
    for user in users {
        print(user.name)
        print(user.age)
    }
}

위의 예제에서 Mapper<User>().mapArray(JSONString: jsonString) 코드는 JSON 배열을 User 객체의 배열로 매핑합니다. 배열 매핑 결과도 옵셔널이므로, nil 체크를 해주어야 합니다.

결론

Swift에서 ObjectMapper를 사용하여 JSON 데이터를 다양한 객체에 매핑하는 방법을 알아보았습니다. ObjectMapper를 사용하면 JSON 데이터를 쉽게 파싱하고 객체로 변환할 수 있으므로, 복잡한 JSON 데이터를 처리해야 하는 경우 유용하게 사용할 수 있습니다.

더 자세한 사용법과 설정에 대해서는 ObjectMapper 공식 문서를 참고하시기 바랍니다.

참고자료