工具用的顺手吗?
你的反馈能帮助我们做得更好
将标准JSON数据一键解析为支持Codable协议的Swift结构体或类代码,用于iOS/macOS开发。
概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
输入{"name":"Ada","age":30,"active":true}后,页面会把字符串、整数和布尔值分别推断为String、Int和Bool属性,并以默认根类型名Root生成Swift代码。对象会形成独立类型,数组会根据样本元素推断为[T];修改JSON、根类型名或选项后,输出会在短暂延迟后重新生成。
这是基于样本的类型推断,不是读取接口契约。样本中没有出现的字段、可能为null的值、整数与小数混用、空数组或同一字段的多种类型,都可能需要开发者结合真实API文档调整。生成代码适合作为模型初稿,不能证明生产响应始终符合样本。
Swift页面默认选择struct并开启“仅类型定义”。因此默认结果包含Foundation导入和结构体属性,但不会自动声明Codable,也不会生成CodingKeys或JSON解码辅助方法。关闭“仅类型定义”后,输出才会扩展为可编码类型,并按当前设置生成初始化器、编码键与辅助代码。
| 选项 | 默认值 | 对输出的影响 |
|---|---|---|
| 结构体或类 | Struct | 可切换为Class |
| 仅类型定义 | 开启 | 只保留模型类型,不声明Codable |
| 生成初始化器 | 开启 | 完整模式下生成便捷初始化代码 |
| 编码键 | From JSON | 完整模式下按JSON键生成CodingKeys |
| 可变属性 | 关闭 | 默认使用let而不是var |
| 推断日期、UUID、枚举、映射 | 开启 | 根据样本识别更具体的类型 |
样本{"user_name":"Ada","createdAt":"2026-09-22T10:00:00Z","profile":{"city":"Shanghai"}}会产生userName属性、推断为Date的createdAt以及独立的Profile类型。默认仅类型模式不会保留user_name到userName的编码映射;若代码需要直接解码这份JSON,应关闭“仅类型定义”,检查生成的CodingKeys和日期解码策略,再在项目中用真实响应测试。
指南
按步骤完成操作,并通过示例核对输入与结果。
粘贴完整的对象或数组,不要带接口日志前缀、JavaScript注释、单引号或尾随逗号。可先点击“格式化”;若语法无效,页面会显示解析错误并清空代码结果。
将默认Root改成业务名称,如UserResponse。名称会影响主类型与下载文件名,应符合团队的Swift命名约定。
只想快速获得属性结构可保留“仅类型定义”;需要JSONDecoder直接解码时关闭该选项,并检查Codable、CodingKeys和辅助方法是否符合项目风格。
日期、UUID、枚举、映射和字符串数字都有单独开关。API实际返回普通字符串时,不要仅因样本看起来像日期或数字就保留更具体的类型。
可复制结果,也可下载以根类型命名的.swift文件。加入项目后应使用多份真实响应测试,包括缺字段、null、空数组和错误值。
场景
查看这项工具在不同工作与生活流程中的用法。
iOS开发者拿到一份API响应样本后,可先生成嵌套结构和基础类型,再按接口文档补充Optional、业务枚举与自定义日期策略,减少机械录入。
将新旧响应分别生成代码并做差异比较,可以快速发现新增对象、数组元素类型或字段命名变化。最终兼容策略仍应由接口契约决定。
用整数、小数、布尔、null、数组和嵌套对象组成小样本,再切换Struct/Class与推断选项,可观察模型结构和编码代码如何变化。
问答
集中解答高频疑问与容易混淆的问题。
单份样本只能证明字段这次出现了。若接口可能缺字段或返回null,应依据接口契约手动改为Optional,并用边界响应验证解码。
类型名称仍填写数组元素所代表的业务概念或响应概念。生成后检查顶层别名与元素类型,避免把泛化的Root长期留在项目中。
日期时间推断默认开启。若后端格式并不稳定,可关闭该推断保留String,或在项目中配置与接口格式一致的日期解码策略。
属性名会转为更符合Swift习惯的写法。完整模式可生成CodingKeys保存映射;仅类型模式不含该映射,需要自行补充或设置解码器的键策略。
须知
使用前了解适用范围、结果限制与必要提醒。
代码能否安全解码取决于真实接口契约与样本覆盖度。合入项目之前,应由开发者核对可空性、数值范围、日期格式、枚举扩展、键映射、访问级别和错误处理。
undefined、NaN和尾随逗号不属于有效JSON。推荐
查找相关工具、专题与可用的 API 能力。