JSON 转 Swift Codable
生成 Codable struct 与 CodingKeys 映射,嵌套对象独立建模,可直接粘进工程。
iOS 开发对接接口的第一步是把 JSON 响应变成模型:Swift 的 Codable 约定字段名用 camelCase,而接口返回的 JSON 十有八九带着 snake_case 或带连字符的键——手工转换既要改字段名又要写 CodingKeys 映射,嵌套一深就漏。本工具自动完成:每个嵌套对象独立成 struct,非法标识符键显式生成 CodingKeys。
字段类型按 JSON 值推断:整数 Int、小数 Double、布尔 Bool、字符串 String、数组 [T]。JSON 根是数组时生成 typealias 列表类型,数组首元素决定元素模型。
CodingKeys 是键名不规范的救生圈
JSON 键 user_name 在 Swift 里应写成 userName——只有当两者不一致时 struct 才需要 enum CodingKeys: String, CodingKey 显式映射。本工具只在必要时生成 CodingKeys(键含连字符、空格或非标识符字符时),干净的键不多一行噪音。
与 JSON 转其他语言的取舍差异
Swift Codable 是编译期生成合成实现,没有 Java/Lombok 那样的注解负担;因此输出是最纯粹的 struct 声明。可选值(字段可能缺失)需要你手工把 let 改成 var 并加 ?——工具按「字段一定存在」生成,保守但确定。
常见问题
- 生成的代码需要第三方库吗?
- 不需要。Codable 是 Swift 标准库能力,生成的 struct 直接可用;JSONDecoder 负责运行时解析。
- 数组根的 JSON 怎么处理?
- 取首元素生成元素模型,并输出 typealias RootObjectList = [RootObject];首元素缺失字段的情况请自行标 Optional。
- 键名是纯数字或含特殊符号会怎样?
- 字段名会被规范成合法标识符(非法字符剔除、首字母小写驼峰),原始键名通过 CodingKeys 精确保留,解析不受影响。