如何使用可解码解析 json?



当我尝试用可解码的生日解析我的 JSON 时,结果为 nil。 请问我应该使用任何建议或代码示例的日期格式。 我的日期格式包括时区。

我的问题是生日为零。如何用解码解析生日?

我的 json :

{
"id": 1,
"name": "fatih",
"birddate": "2018-09-19T11:36:00.4033163+03:00",
"total": 0.9,
"isTest": false
}

这是我的结构:

struct TestDTO : Decodable {
var id:Int?
var name : String?
var birtdate : Date?
var total : Double?
var isTest : Bool?
}
RestClientServiceTest().CallRestService(matching: cmd, completion: { (data) in
do{
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(dateFormatter)
let stories = try decoder.decode(TestDTO.self, from: data!)
print(data)
}catch let error{
print("Json Parse Error : (error)")
}
})

所以,在操场上玩一会儿...

let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SZ"
let value = "2018-09-19T11:36:00.4033163+03:00"
print(format.date(from: value))

打印2018-09-19 08:36:00 +0000

因此,进一步飞跃...

let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SZ"
let text = """
{
"id": 1,
"name": "fatih",
"birddate": "2018-09-19T11:36:00.4033163+03:00",
"total": 0.9,
"isTest": false
}
"""
struct TestDTO : Decodable {
var id:Int?
var name : String?
var birddate : Date?
var total : Double?
var isTest : Bool?
}
do{
let jsonData = text.data(using: .utf8)
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(format)
let stories = try decoder.decode(TestDTO.self, from: jsonData!)
print(stories)
}catch let error{
print("Json Parse Error : (error)")
}

指纹。。。

TestDTO(id: Optional(1), name: Optional("fatih"), birddate: Optional(2018-09-19 08:36:00 +0000), total: Optional(0.9), isTest: Optional(false))

您可能会发现 Swift 的简单 Skeezy 日期格式有一些用

  1. 首先,您在struct中使用的名称是错误的birddate- 错别字错误。
  2. 其次,不要将其设置为Date它是一个String

获取数据String,并在使用它时NSDateFormatter.

您可以在 SO 上搜索NSDateFormatter

  • Swift 中的日期格式

相关内容

  • 没有找到相关文章

最新更新