swift 利用Codable 本地JSON转Model

2017-11-09  本文已影响0人  osnail

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了


78FAEDFF-F1BE-4295-91F9-0C6910CA2B5F.png
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.

上一篇下一篇

猜你喜欢

热点阅读