arrays - iOS 如何转换字典查询包含数组的参数
问题描述
我有一个字典数据:
let dict: [String: Any] = [
"shapeIDs": [1,2,3],
"rows": [1,2],
"userID": "231"
]
我想将其转换为 URL 的查询参数。我的期望结果应该是这样的:
"?shapeIDs[]=1&shapeIDs[]=2&shapeIDs[]=3&rows[]=1&rows[]=2&userID=231"
请帮助为此创建一个乐观的逻辑。
解决方案
快速解决方案:
extension Dictionary {
var queryString: String {
let query = self.reduce("") { (result, keyValue) -> String in
var string = ""
if let values = keyValue.value as? Array<Any> {
string = values.map({"\(keyValue.key)[]=\($0)&"}).reduce("", +)
} else {
string = "\(keyValue.key)=\(keyValue.value)&"
}
return result + string
}.dropLast()
return "?" + String(query)
}
}
推荐阅读
- javascript - 反应 | DOM 操作
- xaml - XAML 绑定数据
- java - 谷歌云语音到文本 API 401 错误 java
- python - 打破外部 For 循环
- html - 角度 src 图像的延迟加载
- c# - 如何以度数获得对象旋转?统一
- mongodb - MongoDB 中的 UpdateMany 使用 $inc 运行两次
- node.js - 应用程序级别的 Kubernetes 证书?
- r - 如何使用 inst/extdata 中的文件?R 包检查防止在 R 3.6 中使用 system.file()
- javascript - 获取后“TypeError:无法读取未定义的属性'forEach'”