[swift] ObjectMapper를 사용하여 JSON 데이터의 필드를 실수로 변환하는 방법은?

Swift에서 ObjectMapper는 JSON 데이터를 객체로 변환하고 객체를 JSON 데이터로 직렬화하는 데 사용되는 라이브러리입니다. 때때로 JSON 데이터에서 필드를 가져올 때 실수 형식으로 변환해야 할 수도 있습니다.

이를 위해 ObjectMapper에서 사용할 수 있는 몇 가지 방법이 있습니다.

  1. map 메서드와 함께 TransformOf를 사용하기 ```swift import ObjectMapper

class MyObject: Mappable { var floatValue: Double?

required init?(map: Map) {
}

func mapping(map: Map) {
    floatValue <- (map["floatValue"], TransformOf<Double, String>(fromJSON: { (value: String?) -> Double? in
        // JSON 데이터 값을 Double 형식으로 변환
        return Double(value ?? "")
    }, toJSON: { (value: Double?) -> String? in
        // Double 값을 JSON 데이터 형식으로 변환
        return value.map { String($0) }
    }))
} }

let jsonString = “{"floatValue": "3.14"}” if let myObject = Mapper().map(JSONString: jsonString) { print(myObject.floatValue) // Output: Optional(3.14) }


2. `TransformOf`를 사용하여 ObjectMapper 확장하기
```swift
import ObjectMapper

extension TransformOf {
    public func convertFromJSON(value: Any?) -> Object? {
        if let stringValue = value as? String, let convertedValue = Object(stringValue) {
            return convertedValue
        }
        return nil
    }

    public func convertToJSON(value: Object?) -> Any? {
        return value.map { $0.description }
    }
}

class MyObject: Mappable {
    var floatValue: Double?

    required init?(map: Map) {
    }

    func mapping(map: Map) {
        floatValue <- (map["floatValue"], StringToDoubleTransform())
    }
}

let jsonString = "{\"floatValue\": \"3.14\"}"
if let myObject = Mapper<MyObject>().map(JSONString: jsonString) {
    print(myObject.floatValue) // Output: Optional(3.14)
}

위의 두 가지 방법은 ObjectMapper를 사용하여 JSON 데이터의 필드를 실수로 변환하는 방법입니다. 선택적으로 특정 필드에 대해 커스텀 변환을 적용할 수 있습니다. 필요에 따라 이 코드를 수정하여 사용하십시오.

참고 자료: