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
相关产品推荐
相关产品推荐

