SwiftUI 中Codable的作用?


 

//        struct Animal: Codable{
//            var name: String
//            var age: Int
//        }
//
//        let jsonStr = "{\"name\" : \"dog\", \"age\" : 5}"
//        guard let jsonData = jsonStr.data(using: .utf8) else {
//            exit(0)
//        }
//
//        let decoder = JSONDecoder()
//        guard let obj = try? decoder.decode(Animal.self, from: jsonData) else {
//            exit(0)
//        }
//
//        print(obj.name)
//        print(obj.age)
        
        //当json中的key值与我们定义的属性名对应时可以采用上述简单的方法, 如果不对应的话就需要借助CodingKeys来实现
        
        struct Animal: Codable{
            var name: String
            var age: Int
            
            enum CodingKeys: String, CodingKey {
                case name = "a_name"
                //case age = "age" //如果前后一致的话 可以省略=以及后边的部分 如 case age, 如果有需要忽略的key, 则不写到此处便可
                case age
            }
        }
        
        let jsonStr = "{\"a_name\" : \"dog\", \"age\" : 5}"
        guard let jsonData = jsonStr.data(using: .utf8) else {
            exit(0)
        }
        
        let decoder = JSONDecoder()
        guard let obj = try? decoder.decode(Animal.self, from: jsonData) else {
            exit(0)
        }
        
        print(obj.name)
        print(obj.age)

 

posted @ 2020-04-03 11:58  liuw_flexi  阅读(413)  评论(0编辑  收藏  举报