Swift Archiving序列化

2 篇文章 0 订阅
本文介绍了Swift中使用Codable进行序列化和反序列化的操作,展示了如何自定义JSON中的键名,以实现模型与JSON数据之间的转换。通过示例代码,演示了如何将Car和Engine结构体编码为JSON数据,以及如何从JSON数据中解码回模型对象。
摘要由CSDN通过智能技术生成

Swift采用新的序列化方式,Codable
Foundation会实现这两种方法(Decodable & Encodable),你不需要做任何事情
而且可以从模型中自定义JSON中的key,非常方便

struct Engine: Codable {
    var factoryName = "factoryName"
    
    // 修改json中的key名称
    private enum CodingKeys: String, CodingKey {
        case factoryName = "factory_name"
    }
}

struct Car: Codable {
    var brand = "宝马"
    var wheelsNumber = ["1", "2", "3", "4"]
    var engine = Engine()
    
    // 修改key的名称,若json中不需wheelsNumber字段时,不写case
    private enum CodingKeys: String, CodingKey {
        case brand = "brand_name"
        case engine
        // case wheelsNumber
    }
}

序列化

    let car = Car()
    let data: Data? = try? JSONEncoder().encode(car)
    print(String(data: data!, encoding: .utf8)!)

输出:{“brand_name”:“宝马”,“engine”:{“factory_name”:“factoryName”}}

反序列化

    if let car = try? JSONDecoder().decode(Car.self, from:data!) {
        print(car)
    }

输出:Car(brand: “宝马”, wheelsNumber: [“1”, “2”, “3”, “4”], engine: Memorize.Engine(factoryName: “factoryName”))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值