arrays - 使用 API 解码 JSON 并将产品添加到字典中的数组
问题描述
我是 Swift 初学者,我正在尝试从网络请求中解码 JSON 对象。我正在尝试将产品放入一个数组中,以便稍后将它们用于 UI。目前我一直在解码 JSON 并将它们放在一个数组中。
这是我尝试使用的 JSON 的简化版本(但可以在 url 中找到完整的 JSON):
{
"items": [
{
"product": {
"name": "Product name"
}
}
]
}
这是到目前为止的 Swift 代码。
// Models
struct Root: Codable {
let items: [Item]
}
struct Item: Codable {
let product: Product
}
struct Product: Codable {
let name: String
}
//Product array
var productArray: [Product] = []
// URL and data fetching
let urlString: String = "https://api.jsonbin.io/b/60832bec4465377a6bc6b6e6"
func fetchData() {
guard let url = URL(string: urlString) else {
return
}
let task = URLSession.shared.dataTask(with: url) { data, _, error in
guard let data = data, error == nil else {
return
}
do {
let result = try JSONDecoder().decode(Root.self, from: data)
DispatchQueue.main.async {
productArray = result
}
} catch {
print(error)
}
}
task.resume()
}
fetchData()
如果有人知道我如何克服这个问题,我将非常感谢您的帮助。目前被困在这几个小时,我似乎无法弄清楚。提前致谢!
解决方案
只是数组map
_items
DispatchQueue.main.async {
productArray = result.items.map(\.product)
}
推荐阅读
- python - 每次交货多次取货,但无法找到部分解决方案
- viewer - 如何从 table1 包中查看查看器
- flutter - 复杂的渐变
- vb.net - 即使 MSL 在资源中,如何在运行时在 EF 模型的概念信息和存储信息之间进行转换?
- apache-spark - 当 shuffle 分区大于 200 时会发生什么(数据帧中的 spark.sql.shuffle.partitions 200(默认情况下))
- javascript - 当脚本加载为“preload”/“modulepreload”时会发生什么?
- node.js - 如何在mongooes中取消事件updatedAt
- sql-server - 创建一个包含所有可能组合的变量,具体取决于关联变量是 1 还是 0
- php - 在 SQL 中添加,添加收入,费用,按名称排序
- ios - 在 Swift 5 中点击通知时切换 ViewController