Swift中如何利用用户输入数据创建指定格式JSON?
问题分析与修复方案
存在的错误点:
- 重复定义属性:
RequestModel里写了两次var var1: String?,Swift不允许结构体里有同名成员,这会直接触发编译错误。 - 字段名与类型不匹配:
- 目标JSON需要
var2字段,但结构体里没有定义,反而重复了var1; - 目标JSON的数组字段是
newArray,但结构体里叫Treatments,名称完全不符; - 数组元素需要
Deleted(布尔类型),但Treat结构体里定义的是adminBy(字符串类型),字段名和类型都不对。
- 目标JSON需要
修正后的Codable结构体:
struct RequestModel: Codable { var var1: String? var var2: String? var newArray: [Treat] } struct Treat: Codable { var Deleted: Bool }
可选优化:字段名映射
如果习惯用Swift的驼峰命名(比如deleted而非Deleted),可以通过CodingKeys做字段映射,保持代码风格统一:
struct Treat: Codable { var deleted: Bool enum CodingKeys: String, CodingKey { case deleted = "Deleted" } }
生成目标JSON的示例代码:
// 创建数据实例 let treatItem = Treat(Deleted: false) let requestModel = RequestModel(var1: "1", var2: "2", newArray: [treatItem]) // 编码为JSON字符串 do { let jsonData = try JSONEncoder().encode(requestModel) if let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString) } } catch { print("JSON编码失败:\(error)") }
内容的提问来源于stack exchange,提问作者drago
相关产品推荐
相关产品推荐

