gpt4 book ai didi

json - 如何使用 ObjectMapper 映射不同类型?

转载 作者:行者123 更新时间:2023-11-28 09:52:01 25 4
gpt4 key购买 nike

我正在使用 ObjectMapper将我的 JSON 映射到 Swift 对象。

我有以下 Swift 对象:

class User: Mappable {

var name: String?
var val: Int?

required init?(map: Map) { }

func mapping(map: Map) {
name <- map["name"]
val <- map["userId"]
}
}

我有这个 JSON 结构:

{
"name": "first",
"userId": "1" // here is `String` type.
},
{
"name": "second",
"userId": 1 // here is `Int` type.
}

映射JSON后,name"first"UseruserId为null。

如何将 Int/String 映射到 Int

最佳答案

看完ObjectMapper的代码后,我找到了一个更简单的方法来解决这个问题,那就是自定义转换。

public class IntTransform: TransformType {

public typealias Object = Int
public typealias JSON = Any?

public init() {}

public func transformFromJSON(_ value: Any?) -> Int? {

var result: Int?

guard let json = value else {
return result
}

if json is Int {
result = (json as! Int)
}
if json is String {
result = Int(json as! String)
}

return result
}

public func transformToJSON(_ value: Int?) -> Any?? {

guard let object = value else {
return nil
}

return String(object)
}
}

然后,使用自定义转换到 mapping 函数。

class User: Mappable {

var name: String?
var userId: Int?

required init?(map: Map) { }

func mapping(map: Map) {
name <- map["name"]
userId <- (map["userId"], IntTransform()) // here use the custom transform.
}
}

希望对遇到同样问题的人有所帮助。 :)

关于json - 如何使用 ObjectMapper 映射不同类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com