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

Swift中如何动态为JSON数组内的变量值添加引号?

Swift动态构建JSON中options数组的正确方法

别直接拼接JSON字符串,核心是先构建Swift原生的数组,再通过系统API转成JSON,完全不用手动处理转义、逗号这些坑。

步骤1:动态构建选项数组

根据业务逻辑,先把需要的选项添加到Swift数组里:

// 动态变量示例
let firstOption = "DynamicOption1"
let secondOption = "DynamicOption2"

// 初始化空数组,按需添加元素
var optionsArray: [String] = []
optionsArray.append(firstOption)

// 比如满足某个条件时加入第二个选项
if shouldAddSecondOption {
    optionsArray.append(secondOption)
}

步骤2:组装字典并转JSON

把数组放到字典对应的options键下,再用JSONSerialization转成字符串:

// 构建完整的消息字典
let jsonMessage: [String: Any] = [
    // 其他业务键值对
    "options": optionsArray
    // 其他业务键值对
]

// 转换为JSON字符串
do {
    let jsonData = try JSONSerialization.data(withJSONObject: jsonMessage, options: .prettyPrinted)
    guard let jsonString = String(data: jsonData, encoding: .utf8) else {
        print("Failed to convert data to string")
        return
    }
    print(jsonString)
} catch {
    print("JSON转换出错: \(error)")
}

为什么之前的方法会踩坑?

  • 手动拼接字符串:系统转JSON时会自动处理引号转义、数组结构,手动拼接很容易残留转义符或者结构错误
  • 类型不匹配:options对应的是数组类型,直接存字符串肯定会触发类型错误
  • 拼接变量成单一字符串:这会让options的值变成一个长字符串,而不是数组结构

进阶:用Codable模型(更优雅)

如果你的JSON结构复杂,推荐用Codable自定义模型,编码逻辑更清晰:

struct Message: Codable {
    // 定义其他属性
    var options: [String]
    // 定义其他属性
}

// 构建模型实例
var message = Message(options: [])
message.options.append(firstOption)
if shouldAddSecondOption {
    message.options.append(secondOption)
}

// 编码为JSON字符串
do {
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted
    let jsonData = try encoder.encode(message)
    guard let jsonString = String(data: jsonData, encoding: .utf8) else {
        print("数据转字符串失败")
        return
    }
    print(jsonString)
} catch {
    print("编码失败: \(error)")
}

内容的提问来源于stack exchange,提问作者Ryan H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:20