[swift] ObjectMapper를 사용하여 Null 값을 처리하는 방법은?

Swift에서 JSON 데이터를 모델 객체로 매핑할 때, 때로는 JSON 데이터 중 일부가 null일 수 있습니다. ObjectMapper는 Swift의 JSON 매핑 라이브러리 중 하나로, 이러한 null 값을 처리하는 간단한 방법을 제공합니다.

ObjectMapper란?

ObjectMapper는 Swift에서 사용되는 JSON 매핑 라이브러리로, JSON 데이터를 객체로 변환하거나, 객체를 JSON 데이터로 변환할 수 있도록 도와줍니다. 이 라이브러리를 사용하면 Swift 객체와 JSON 사이의 변환 작업을 쉽게 수행할 수 있습니다.

Null 값을 처리하는 방법

ObjectMapper를 사용하여 JSON 데이터를 모델 객체로 매핑하는 경우, null 값을 처리하는 방법은 다음과 같습니다.

  1. Optional 변수 사용: 모델 객체의 속성을 Optional로 선언하여 null 값을 처리할 수 있습니다. 예를 들어, 다음과 같은 User 모델이 있다고 가정해보겠습니다.
struct User: Mappable {
    var id: Int?
    var name: String?
    
    init?(map: Map) {}
    
    mutating func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
    }
}
  1. Null 변환: ObjectMapper는 Null 값을 자동으로 처리해줍니다. 만약 JSON 데이터의 키에 해당하는 값이 null이라면, 모델 객체의 속성은 자동으로 nil로 설정됩니다.

  2. Transform 변환: ObjectMapper는 Transform을 사용하여 값을 변환할 수 있는 기능을 제공합니다. 이를 통해 null 값을 다른 값으로 치환할 수 있습니다. 예를 들어, 다음과 같은 User 모델을 사용해보겠습니다.

struct User: Mappable {
    var id: Int
    var name: String
    
    init?(map: Map) {}
    
    mutating func mapping(map: Map) {
        id <- (map["id"], TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
            // null 값을 0으로 치환
            return value != nil ? Int(value!) : 0
        }, toJSON: { (value: Int?) -> String? in
            return String(value ?? 0)
        }))
        name <- map["name"]
    }
}

위의 코드에서는 Transform을 사용하여 id 값을 JSON 데이터의 String 형식에서 Int 형식으로 변환하며, null 값을 0으로 치환합니다.

요약

ObjectMapper를 사용하여 Null 값을 처리하는 방법은 크게 Optional 변수 사용, Null 변환, Transform 변환 세 가지로 요약할 수 있습니다. Swift에서 JSON 데이터를 모델 객체로 매핑할 때, null 값을 올바르게 처리하여 원활한 데이터 변환이 이루어질 수 있도록 주의해야 합니다.

참고 자료