swift - 如何使用 Decodable 解析 json?
问题描述
当我尝试用可解码的生日解析我的json时,为零。请问我应该使用什么日期格式的任何建议或代码示例。我的日期格式包括时区。
我的问题是生日为零。如何用 decodeable 解析生日?
我的 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 的 Easy Skeezy Date Formatting有一些用途
推荐阅读
- docker - 我在哪里可以找到ghost的数据,例如:帖子,用户等
- django - Django - 每个 CHOICES 字段都有计数的模型
- laravel - URL 生成器将“localhost”放在 Laravel 中的域之前
- c++ - boost::get vs boost::apply_visitor 从变体中获取值时
- html - 布局主要部分被页脚覆盖
- python - 如何通过 Selenium 和 Python 从没有选择标签的下拉列表中选择最后一个值
- amazon-web-services - 无法在 .ebextensions 中创建带有“files”标签的 Tomcat 配置文件
- html - 当我尝试向我的主要部分添加背景时,标题被覆盖
- git - Git:如何更改我的本地指向的起源分支?
- php - 如何使用php lighthouse在laravel中添加动态where子句进行graphql处理