gpt4 book ai didi

swift - 如何使用 Decodable 解析 json?

转载 作者:行者123 更新时间:2023-11-28 10:37:45 25 4
gpt4 key购买 nike

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

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

我的 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)")
}
})

最佳答案

那么,在 Playground 上玩一下......

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))

您可能会找到 Easy Skeezy Date Formatting for Swift有一定的用处

关于swift - 如何使用 Decodable 解析 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52404377/

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