[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이 소수점으로 반올림된 것을 확인할 수 있습니다.