Objectmapper: ์ด์ง„ ์—ฐ์‚ฐ์ž ')

์— ๋งŒ๋“  2017๋…„ 03์›” 08์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tristanhimmelman/ObjectMapper

์•ˆ๋…•,
json์„ ๊ฐœ์ฒด์— ๋งคํ•‘ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ํ•ญ์ƒ nil์ธ ๊ฐ’(์ •์ˆ˜)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด json ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค.

{"username":"user1","age":3}

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋‚ด ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

class T1: Mappable {
    var username: String?
    var age: String?

    required init?(map: Map) {

    }

    // Mappable
    func mapping(map: Map) {

        let transform = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
            // transform value from String? to Int?
            return Int(value!)
        }, toJSON: { (value: Int?) -> String? in
            // transform value from Int? to String?
            if let value = value {
                return String(value)
            }
            return nil
        })

        username    <- map["username"]
        age <- (map["age"], transform)

    }
}

json์ด ""๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  "age"๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— transformOF ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ํ•˜๋ฏ€๋กœ ๋ฌธ์ž์—ด ์œ ํ˜•์˜ "age" ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค("age" ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Int๋กœ, ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์˜์—ญ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋ฉฐ ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” String์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๋ณ€ํ™˜ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๋กœ ์ธํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ดํ•ญ ์—ฐ์‚ฐ์ž '<-'๋Š” 'String' ๋ฐ '(Map, TransformOf ์œ ํ˜•์˜ ํ”ผ์—ฐ์‚ฐ์ž์— ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)'

TransformOf๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@adasoft-dev, ๋‹น์‹ ์€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. TransformOf ๋Š” String ๋ฐ Int ํ•ด๋‹นํ•˜๋Š” TransformOf<Object, JSON> ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

let transform = TransformOf<String, Int>(
  fromJSON: { (value: Int?) -> String? in
    if let value = value {
      return String(value)
    } else {
      return nil
    }
  },
  toJSON: { (value: String?) -> Int? in
    if let value = value {
      return Int(value)
    } else {
      return nil
    }
  }
)

๋ชจ๋“  3 ๋Œ“๊ธ€

+1

@adasoft-dev, ๋‹น์‹ ์€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. TransformOf ๋Š” String ๋ฐ Int ํ•ด๋‹นํ•˜๋Š” TransformOf<Object, JSON> ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

let transform = TransformOf<String, Int>(
  fromJSON: { (value: Int?) -> String? in
    if let value = value {
      return String(value)
    } else {
      return nil
    }
  },
  toJSON: { (value: String?) -> Int? in
    if let value = value {
      return Int(value)
    } else {
      return nil
    }
  }
)

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค. ์„œ๋ฒ„๋Š” ํ•ญ์ƒ ๊ฐ’์ด int ์œ ํ˜• ๋˜๋Š” ๋ฌธ์ž์—ด ์œ ํ˜•์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํด๋ž˜์Šค์— ์ •์˜๋œ ์œ ํ˜•์ด ์žˆ์œผ๋ฉด json ๋ฌธ์ž์—ด์˜ ๊ฐ’ ์œ ํ˜•์ด ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค์—์„œ ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰