Tool Kumar 工具
JSON 转 Swift 模型
生成遵循 Codable 的 Swift 结构体。当属性名与 JSON 键名不同时,转换器会添加 CodingKeys,所以像 user-id 这样的键仍能解码到 userId。
如何使用这个工具
- 粘贴一份有代表性的响应,其中应包含字段存在差异的记录。
- 检查生成的输出,必要时修改根名称。
- 复制或下载代码,然后对照你的 API 契约检查类型。
示例演示
以下输出来自内置转换器。两个数组元素的 price 值用于推断浮点型字段;note 值分别为 null 和字符串,因此推断为可空字段。
输入
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}输出
import Foundation
struct Root: Codable {
let userId: Int
let profile: Profile
let items: [Item]
enum CodingKeys: String, CodingKey {
case userId = "user-id"
case profile, items
}
}
struct Profile: Codable {
let city: String
let createdAt: String
enum CodingKeys: String, CodingKey {
case city
case createdAt = "created_at"
}
}
struct Item: Codable {
let price: Double
let note: String?
}
用 JSONDecoder 解码
用 JSONDecoder 配合生成的 Root 结构体进行解码。借助 Codable,同一个模型也可以用 JSONEncoder 编码。
这份输出请保持默认的键解码策略。它的 CodingKeys 已经包含传输时的原始键名,包括 created_at。
let model = try JSONDecoder().decode(Root.self, from: responseData)
let encoded = try JSONEncoder().encode(model)选项与特殊情况
- 整数推断为 Int,小数推断为 Double,超出有符号 64 位范围的整数推断为 Decimal。请检查目标平台的限制和小数精度。
- null 或缺失的字段会变成可选属性。只出现过 null 或类型混合的结构,会在需要时使用生成的 JSONValue 辅助类型。
- JSONValue 用 Double 存储数字,因此精确的金额或非常大的 ID 请使用明确的类型。
- 日期字符串保持为 String。如果把字段改为 Date,请按 API 的日期格式配置 JSONDecoder.dateDecodingStrategy。
默认保护隐私
你的文档只保留在这个浏览器中。Tool Kumar 在你的设备上解析、转换并生成下载文件,无需账号,也没有上传步骤。
JSON 转 Swift 模型:常见问题
- 生成的是类还是结构体?
- 遵循 Codable 的结构体,使用 let 属性和嵌套的模型类型,并导入 Foundation。
- 什么时候会添加 CodingKeys?
- 当属性名发生变化时,会生成一个 CodingKeys 枚举,把 Swift 标识符映射回原始 JSON 键名。
- 如何处理 null?
- 示例中为 null 或在部分记录中缺失的字段会生成可选属性。未知或类型混合的值使用一个遵循 Codable 的 JSONValue 枚举,只在被引用时才会添加。
- 可以直接用 JSONDecoder 吗?
- 可以。把生成的结构体复制到项目中,从 Data 解码 Root.self 即可。请先检查可选字段和日期类型。