最近开始学习Swift,发现Swift 4 加入了原生的JSON解析。 参照这个教程学习了原生的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)")
}
解析结果
第二种情况(继承父类属性---解析有问题(只有继承于父类的属性有值))
模型
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与解析
与第一种情况相同
解析结果
可以发现只有父类的的属性解析到了数据
子类全为nil