将密码学与 ObjectMapper 结合使用
Using cryptography with ObjectMapper
我有一个 class,它被映射到 ObjectMapper
。在过去,映射工作正常,但项目架构中的更改使 Double
的 Web 服务 return 字段变为具有加密值的 String
。
是否可以在映射期间解密并将 web 服务字段转换为我的 class 变量?
这就是我今天的收获:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- map["pointsBalance"]
families <- map["fam"]
}
}
这是我想做的事情:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- Double(Decryptor.decrypt(map["pointsBalance"]))
families <- map["fam"]
}
}
有几种方法可以完成数据解密。 ObjectMapper 提供协议 TransformType
来处理映射时的数据转换 (reference).
变形金刚:
import ObjectMapper
class PointsTransform: TransformType {
typealias Object = Double
typealias JSON = String
func transformFromJSON(_ value: Any?) -> Object? {
guard let encoded = value as? String
else { return nil }
// TODO: Replace with decoding logic
return 239_584.938
}
func transformToJSON(_ value: Object?) -> JSON? {
guard let decoded = value
else { return nil }
return "\(decoded)"
}
}
型号:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- (map["pointsBalance"], PointsTransform())
families <- map["fam"]
}
}
我有一个 class,它被映射到 ObjectMapper
。在过去,映射工作正常,但项目架构中的更改使 Double
的 Web 服务 return 字段变为具有加密值的 String
。
是否可以在映射期间解密并将 web 服务字段转换为我的 class 变量?
这就是我今天的收获:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- map["pointsBalance"]
families <- map["fam"]
}
}
这是我想做的事情:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- Double(Decryptor.decrypt(map["pointsBalance"]))
families <- map["fam"]
}
}
有几种方法可以完成数据解密。 ObjectMapper 提供协议 TransformType
来处理映射时的数据转换 (reference).
变形金刚:
import ObjectMapper
class PointsTransform: TransformType {
typealias Object = Double
typealias JSON = String
func transformFromJSON(_ value: Any?) -> Object? {
guard let encoded = value as? String
else { return nil }
// TODO: Replace with decoding logic
return 239_584.938
}
func transformToJSON(_ value: Object?) -> JSON? {
guard let decoded = value
else { return nil }
return "\(decoded)"
}
}
型号:
class PosicaoConsolidada: Mappable {
var portifolioBalance: Double!
var families: [Family]!
required init?(map: Map) {}
public func mapping(map: Map) {
portifolioBalance <- (map["pointsBalance"], PointsTransform())
families <- map["fam"]
}
}