swift的JSON对model的转化确实心碎,刚才是搞得时候本想使用OC的JSONModel那种强大的转化库来无脑使用,但是心塞的发现并不能开心的使用,于是便四处寻找新的轮子,知道swift4之后还是apple大佬为我们提供了Codable,这下就开心了,ok ok ok废话太多了开撸
首先我们先准备一个本地的JSON文件test.json
{
"name": "小明",
"age": 12,
"weight": 43.2,
"school": [{
"name": "市第一中学11",
"address": "XX市人民中路 66 号11"
},
{"name": "市第一中学22",
"address": "XX市人民中路 66 号22"
}]
}
其实个人感觉这种数据基本上是我们最常见的了,有"字典"有"数组",ok 本地json有了就该撸model了
struct School: Codable {
var name: String
var address: String
}
struct Student: Codable {
var name: String
var age: Int
var weight: Float
var school: [School]
}
这里值得注意的是我的model都是继承与Codable,并不是NSObject
OK 本地JSON有了,model有了下面就是JSON转化为我们设定的model了
let path = Bundle.main.path(forResource: "test", ofType: "json")
let loaclData = NSData.init(contentsOfFile: path!)! as Data
do {
let students = try JSONDecoder().decode(Student.self, from: loaclData)
debugPrint("student====\(students.name)")
} catch {
debugPrint("student===ERROR")
// 异常处理
}
至此JSON转Model就完成了,不得不说这很apple,就为我们提供一个Codable类,我们就可以这么简单的让json2Model.