补齐反例样本
根输入接受对象或非空对象数组。根数组生成的是元素模型,应解码 [Root].self。嵌套数组也会读取所有元素,不会仅根据第一条记录决定字段。
类型生成
示例包含字段缺失与 null,可直接观察可选属性如何形成。
解析与生成均在当前浏览器内完成,输入不会上传或存储。
根数组样本定义元素 Root;请解码 [Root].self。
2 个结构体 · 2 个可选属性
JSON 转 Swift 适合从接口响应整理模型初稿。不要只放一条字段齐全的记录:把缺少字段的记录也放进数组,推断才能发现可选属性。
生成的 Swift 结构体包含 Codable 模型及 CodingKeys。样本只能描述已见数据,无法代替接口协议中的必填约束、枚举或业务校验。
JSON 转 Swift 会合并同一数组位置的所有对象。某个键在其他样本中缺失,或值出现 null,就生成可选属性;始终存在的确定类型继续保持非可选。
默认保留日期字符串。开启 ISO 推断后,符合完整时间及时区条件的字符串才连接到 Date 属性与解码辅助函数,其余字符串保持原类型。
根输入接受对象或非空对象数组。根数组生成的是元素模型,应解码 [Root].self。嵌套数组也会读取所有元素,不会仅根据第一条记录决定字段。
原键含下划线、标点或保留字时,请保留 CodingKeys。保留名称模式尽量沿用合法标识符,camelCase 模式统一驼峰命名。日期推断要求时区及最多三位小数秒。
编辑后等待 350 毫秒自动生成;关闭自动模式可用按钮或 Ctrl/Cmd+Enter。输入或选项变化立即禁用过期结果导出。示例和清空先展示替换字符数,应用后可撤销一次。
JSON 转 Swift 输出同一文件中的 var 属性和 Codable 结构体。非空嵌套对象有独立辅助模型;空对象使用字典;混合数据使用自包含的递归 JSONValue 枚举,避免 Any 无法合成 Codable 的问题。
全部为整数写法且处于有符号 64 位范围的数字组使用 Int64。小数、指数、超范围整数及包含这些样本的数字组使用 Foundation.Decimal。浏览器不会先将数字转成 JavaScript Number 再推断。
默认只把样本缺失或为 null 的属性设为可选,也可选择全部可选。Swift 合成解码将缺失与 null 都读成 nil,编码通常省略 nil 属性,不能通过该值恢复两者区别。
makeJSONDecoder() 保持默认键策略;有 Date 时依次使用带与不带小数秒的 ISO8601DateFormatter,也适用于嵌套日期。需要重新编码为 ISO 文本时,应另行设置编码器日期策略。
包含。每个生成结构体都遵循 Codable,混合值也使用可编码枚举。JSON 转 Swift 同时生成 makeJSONDecoder();按根对象或根数组选择 Root.self 或 [Root].self,并保留默认键策略。
根节点支持对象或非空的纯对象数组。嵌套对象生成辅助结构体,嵌套数组合并全部元素;空对象变成字典,空数组或混合数据用 JSONValue 表达不确定类型。
开启 CodingKeys 即可保留原键映射。驼峰模式会调整名称,保留模式尽量沿用合法名称;保留字、特殊字符和冲突会改名并加后缀。关闭映射但仍需改名时会明确报错。
这是 Swift 合成 Codable 的默认语义:可选属性通过 decodeIfPresent 读取,缺失和 null 都成为 nil,编码通常省略该属性。若协议需要区分缺失、空值和实际值,应自行编写解码逻辑。
此页直接读取无损数字词法,按预算选择 Int64 或 Decimal,混合值中的数字也使用 Decimal。已在 Swift 6.3.1/macOS 26 做独立数值比较;旧 Foundation 行为不同,仍需在实际部署系统验证。
发现需要改进的推断情况?