用途:为 Swift 6.x 中采用 Codable 协议进行 JSON 与 PropertyList 编解码提供系统化模式参考,适用于处理协议一致性、键名映射、枚举序列化和日期解析等任务。
主要能力:
- 自动合成:当所有存储属性均为 Codable 时,添加
: Codable即可自动生成实现;包含原始值枚举、无关联值枚举与带关联值枚举的编码形态说明。 - CodingKeys 定制:重命名键、排除属性、使用
decoder.keyDecodingStrategy = .convertFromSnakeCase处理下划线转驼峰,并通过{CaseName}CodingKeys定制枚举关联值的键。 - 手动实现与容器:针对结构差异,使用 Keyed、Unkeyed、Single-value、Nested 容器自行实现
init(from:)与encode(to:),并可用桥接类型转换结构,如将字典转为对象数组。 - 日期处理:支持
.iso8601、.secondsSince1970、.millisecondsSince1970、.formatted(formatter)与.custom等策略;自定义 DateFormatter 时应设置Locale(identifier: "en_US_POSIX")与时区,且避免在闭包内重复创建 formatter。 - 类型转换:通过 StringBacked 包装器处理数字以字符串返回的接口;FlexibleValue 用于类型不确定的松散接口,但建议优先使用严格类型。
- 进阶能力:iOS 15+ 的 DecodableWithConfiguration 注入 JSON 之外的数据,早期版本可用 userInfo 方案;支持部分字段解码与 DecodingError 分类调试。
使用方式:在 Swift 项目中定义符合 Codable 的类型,或用 JSONDecoder/JSONEncoder 编解码;按上文决策树选择自动合成、CodingKeys 或手动实现。遇到 keyNotFound、typeMismatch 等错误时按对应方式修正。
适用场景:网络接口数据解析、本地持久化、枚举与嵌套结构序列化。
限制:仅覆盖 Codable 主题,不涉及网络层与存储方案;部分特性要求 iOS 15+ 或 iOS 17+。避免 try? 吞掉错误、手工拼接 JSON、用 JSONSerialization 处理 Codable 类型,以及忽略日期时区等反模式。工具的具体安装方式、收费与平台信息暂未提供。