使用字典从 API 解码 JSON 并将产品添加到数组

Decoding JSON from API with and adding products to an array from dictionary

我是 Swift 初学者,我正在尝试从网络请求中解码 JSON 对象。我正在尝试将产品放入一个数组中,以便稍后在 UI 中使用它们。目前我一直在解码 JSON 并将它们放在一个数组中。

这是我正在尝试使用的 JSON 的简化版本(但完整的 JSON 可以在 url 中找到):

{
  "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)
}