Swift 使用 ObjectMapper
Swift using ObjectMapper
我正在从服务器解析 json。我在 json 中得到 4 个值,所以我创建了模型 class
class PriceData: Mappable {
var buy: Double?
var sell: Double?
var spot_price: NSNumber?
var timestamp: String?
var timesStampDt: Date?
required init?(map: Map) {
//
}
func mapping(map: Map) {
buy <- map["buy"]
sell <- map["sell"]
spot_price <- map["spot_price"]
timestamp <- map["timestamp"]
print(String(describing: GlobalMethods.dateFormat(dt: timestamp!)))
timesStampDt <- map[String(describing: GlobalMethods.dateFormat(dt:
timestamp!))]
}
}
我正在获取字符串类型的时间戳,但我需要在解析时转换为日期,所以我使用此方法将时间戳转换为日期,
static func dateFormat(dt: String) -> Date{
let formatter = Foundation.DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date1 = formatter.date(from: dt)
print("date:\(String(describing: date1))")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let resultTime = formatter.date(from: dt)
return resultTime!
}
但是我在映射函数中将转换后的日期传递给 "timesStampDt"
timesStampDt 的值为 nil。
您可能想使用对象映射器的 Transform 方法。检查 DateTransform class 并按如下方式使用它。
timesStampDt <- (map["timestamp"], DateTransform())
Tis 会将您的时间戳转换为日期。可以进一步研究transformclass,自己做任何Object Transform,非常灵活
为什么不简单地让 JSONDecoder 处理日期解析?您可以在解码器上设置 your format 以配置获取日期的格式,以便解码器知道如何解码它。
使用 JSONDecoder
和 Codable
使解析代码更清晰。
Here 是 Codable 教程供您阅读。
我正在从服务器解析 json。我在 json 中得到 4 个值,所以我创建了模型 class
class PriceData: Mappable {
var buy: Double?
var sell: Double?
var spot_price: NSNumber?
var timestamp: String?
var timesStampDt: Date?
required init?(map: Map) {
//
}
func mapping(map: Map) {
buy <- map["buy"]
sell <- map["sell"]
spot_price <- map["spot_price"]
timestamp <- map["timestamp"]
print(String(describing: GlobalMethods.dateFormat(dt: timestamp!)))
timesStampDt <- map[String(describing: GlobalMethods.dateFormat(dt:
timestamp!))]
}
}
我正在获取字符串类型的时间戳,但我需要在解析时转换为日期,所以我使用此方法将时间戳转换为日期,
static func dateFormat(dt: String) -> Date{
let formatter = Foundation.DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date1 = formatter.date(from: dt)
print("date:\(String(describing: date1))")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let resultTime = formatter.date(from: dt)
return resultTime!
}
但是我在映射函数中将转换后的日期传递给 "timesStampDt"
timesStampDt 的值为 nil。
您可能想使用对象映射器的 Transform 方法。检查 DateTransform class 并按如下方式使用它。
timesStampDt <- (map["timestamp"], DateTransform())
Tis 会将您的时间戳转换为日期。可以进一步研究transformclass,自己做任何Object Transform,非常灵活
为什么不简单地让 JSONDecoder 处理日期解析?您可以在解码器上设置 your format 以配置获取日期的格式,以便解码器知道如何解码它。
使用 JSONDecoder
和 Codable
使解析代码更清晰。
Here 是 Codable 教程供您阅读。