[swift] ObjectMapper를 사용하여 JSON 데이터의 필드를 소수점으로 반올림하는 방법은?

일반적으로 ObjectMapper는 JSON 데이터를 객체로 매핑하는데 사용됩니다. 객체의 필드를 소수점으로 반올림하기 위해서는 ObjectMapper에서 변환 처리를 수행할 수 있습니다.

다음은 ObjectMapper를 사용하여 JSON 데이터의 필드를 소수점으로 반올림하는 방법의 예제입니다.

import ObjectMapper

class MyObject: Mappable {
    var value: Double = 0.0

    required init?(map: Map) {}

    func mapping(map: Map) {
        value <- (map["value"], DoubleRoundingTransform())
    }
}

class DoubleRoundingTransform: TransformType {
    typealias Object = Double
    typealias JSON = Any

    init() {}

    func transformFromJSON(_ value: Any?) -> Double? {
        guard let stringValue = value as? String else {
            return nil
        }

        guard let doubleValue = Double(stringValue) else {
            return nil
        }

        return doubleValue.rounded()
    }

    func transformToJSON(_ value: Double?) -> Any? {
        return value
    }
}

위의 예제에서는 ObjectMapper의 mapping(map: Map) 함수에서 value 필드의 변환 처리를 설정합니다. 변환 처리를 위해서 DoubleRoundingTransform 클래스를 사용합니다.

DoubleRoundingTransform 클래스는 TransformType 프로토콜을 준수하며, transformFromJSON(_:) 함수에서 JSON 데이터를 객체 필드로 변환하고, transformToJSON(_:) 함수에서 객체 필드를 JSON 데이터로 변환합니다. 이 예제에서는 JSON 데이터의 필드 값을 Double로 변환한 후 rounded() 함수를 사용하여 반올림 처리하고 있습니다.

이제 ObjectMapper를 사용하여 JSON 데이터를 객체로 변환할 때 value 필드가 소수점으로 반올림됩니다.

let jsonString = "{\"value\": \"3.14\"}"
if let myObject = Mapper<MyObject>().map(JSONString: jsonString) {
    print(myObject.value) // 출력 결과: 3.0
}

위의 예제에서는 jsonString 문자열을 JSON 데이터로 가정하고, ObjectMapper를 사용하여 MyObject 객체로 매핑합니다. 출력 결과로서 myObject.value 필드의 값인 3.0이 소수점으로 반올림된 것을 확인할 수 있습니다.