如何创建包含方括号([])的URLQueryItem以传递数组类型URL查询参数
解决方案
URLQueryItem 的 value 仅支持传入字符串类型,无法直接接收数组作为参数值,你可以通过手动拼接参数名后缀 [],为数组内的每个元素单独创建 URLQueryItem 实现需求。
实现代码示例
let baseUrl = URL(string: "https://sample.com/detail")! var urlComponents = URLComponents(url: baseUrl, resolvingAgainstBaseURL: false) // 你的数组参数 let itemCodeArray = ["smtwGBArkp3ByfrLK3KfxdoX"] var queryItems = [URLQueryItem]() for code in itemCodeArray { // 手动给参数名添加 [] 后缀 queryItems.append(URLQueryItem(name: "item_code[]", value: code)) } urlComponents.queryItems = queryItems // 验证生成的URL if let targetUrl = urlComponents.url { print(targetUrl) // 输出:https://sample.com/detail?item_code[]=smtwGBArkp3ByfrLK3KfxdoX }
补充说明
如果服务端要求数组参数以逗号分隔的单值形式传递,直接将参数名设为 item_code[],值设为数组元素拼接后的字符串即可:
let joinedCode = itemCodeArray.joined(separator: ",") urlComponents.queryItems = [URLQueryItem(name: "item_code[]", value: joinedCode)]
内容的提问来源于stack exchange,提问作者hiroshi046
相关产品推荐
相关产品推荐

