// 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)