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

Swift5 如何将两个数组合并为指定格式的JSON对象数组

Swift5 实现两个数组合并为指定结构数组的方案

你可以通过zip函数配合map快速完成组合,两种常用实现方式如下:


方案1:先定义结构化模型(推荐,适用于需要后续操作数据的场景)

首先定义遵守Codable协议的模型,方便后续转JSON或者做其他数据处理:

// 定义数据模型
struct User: Codable {
    let name: String
    let email: String
}

// 你的两个原始数组
let nameArray = ["Test", "Test Mail"]
let emailArray = ["test@gmail.com", "test3@gmail.com"]

// 合并为目标结构数组
let targetArray = zip(nameArray, emailArray).map { User(name: $0, email: $1) }

如果需要转成你示例里的JSON字符串,加一步编码即可:

do {
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted // 格式化输出,和你示例的排版一致
    let jsonData = try encoder.encode(targetArray)
    if let jsonStr = String(data: jsonData, encoding: .utf8) {
        print(jsonStr)
    }
} catch {
    print("编码出错:\(error)")
}

方案2:直接生成字典数组(适用于临时转JSON不需要额外操作数据的场景)

如果不想单独定义模型,可以直接合并为字典数组:

let nameArray = ["Test", "Test Mail"]
let emailArray = ["test@gmail.com", "test3@gmail.com"]

let targetDictArray = zip(nameArray, emailArray).map { ["name": $0, "email": $1] }

注意:zip函数会在两个数组长度不一致时,以更短的数组长度为准生成结果,你已经保证两个数组长度一致,所以不会有截断问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 05:24:02