【发布时间】:2019-04-03 20:01:14
【问题描述】:
我需要做以下事情: 定义两个 Swift 类来解码 JSON 字符串
解码JSON字符串得到两个类的对象
这是我必须解码的 JSON:
{“status”:200,"holidays":[{"name":"Thanksgiving","date":"2017-10-09","observed":"2017-10-09","public ":false}]}
我已经尝试创建两个类,但在主类中调用该类时,我得到的只是什么
class HolidayItems : Decodable {
let name : String?
let date : String?
let observed: String?
let `public` : Bool?
private enum CodingKeys: String, CodingKey {
case name
case date
case observed
case `public`
}
required init(from decoder:Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
name = try container.decode(String.self, forKey: .name)
date = try container.decode(String.self, forKey: .date)
observed = try container.decode(String.self, forKey: .observed)
`public` = try container.decode(Bool.self, forKey: .`public`)
}
} // HolidayItems
class HolidayAPI: Decodable {
let status: HolidayItems
// let holiday :[HolidayItems]
func getHolidayName() -> String {
return status.name ?? "no advice, server problem"
}
func getAdviceNo() -> String {
return status.date ?? ""
}
private enum CodingKeys: String, CodingKey {
case status
case holiday = "items"
}
required init(from decoder:Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
status = try container.decode(HolidayItems.self, forKey: .status)
// holiday = try container.decode(HolidayItems.self, forKey: .holiday)
}
}
这是我想得到的结果:
可选(“感恩节”) 可选(“2017-10-09”)
我一无所获
【问题讨论】: