You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何利用用户输入数据创建指定格式JSON?

问题分析与修复方案

存在的错误点:

  • 重复定义属性:RequestModel里写了两次var var1: String?,Swift不允许结构体里有同名成员,这会直接触发编译错误。
  • 字段名与类型不匹配:
    • 目标JSON需要var2字段,但结构体里没有定义,反而重复了var1;
    • 目标JSON的数组字段是newArray,但结构体里叫Treatments,名称完全不符;
    • 数组元素需要Deleted(布尔类型),但Treat结构体里定义的是adminBy(字符串类型),字段名和类型都不对。

修正后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:11:14