最近開始學(xué)習(xí)Swift,發(fā)現(xiàn)Swift 4 加入了原生的JSON解析拄丰。 參照這個教程學(xué)習(xí)了原生的JSON 解析Swift 4 JSON 解析指南晌端,在這過程中我遇到了點問題谚殊,寫出來看看有沒有人也遇到了戈鲁,一起找找解決辦法仇参。
第一種情況(屬性全在一個類---解析正常)
模型
enum BeerStyle: String, Codable {
case ipa
case stout
case kolsch
}
class Beer: Codable {
var name: String?
var abv: Float?
var brewery: String?
var style: BeerStyle?
}
JSON與解析
let jsonDic = ["name":"Endeavor", "abv":8.9, "brewery":"Saint Arnold", "style":"ipa"] as [String : Any]
let jsonData = try! JSONSerialization.data(withJSONObject: jsonDic, options: .prettyPrinted)
let decode = JSONDecoder()
do {
let beer = try decode.decode(Beer.self, from: jsonData)
print("解析成功:\(beer)")
} catch {
print("解析失敗:\(error)")
}
解析結(jié)果
解析結(jié)果
第二種情況(繼承父類屬性---解析有問題(只有繼承于父類的屬性有值))
模型
enum BeerStyle: String, Codable {
case ipa
case stout
case kolsch
}
class Wine: Codable {
var abv: Float?
}
class Beer: Wine {
var name: String?
var brewery: String?
var style: BeerStyle?
}
JSON與解析
與第一種情況相同
解析結(jié)果
解析結(jié)果
可以發(fā)現(xiàn)只有父類的的屬性解析到了數(shù)據(jù)
子類全為nil