簡體   English   中英

如何使用帶有 JSONDecoder 的自定義完成塊解析嵌套的 JSON?

[英]How to parse nested JSON using custom completion block with JSONDecoder?

我有嵌套的 json 對象,需要解析並在 json 中使用 imageUrls 填寫 collectionViewCell我需要遍歷 list.recommendBannerImages 並將其保存在外部 var 中,以便我可以將它用於我的 collectionViewCells

首先,您為此編寫一個函數,並假設此函數名稱為 fetchData 並且您的數據模型應符合 Codable 協議。

func fetchData(url: String, completion: @escaping(Result<[DataModel], Error>)->()){
guard let url = URL(string: url) else { return }
    URLSession.shared.dataTask(with: url){(data, response, error) in
        if error != nil{
            completion(.failure(error!))
            print(error!)
        } else{
            guard let _ = response as? HTTPURLResponse, let jsonData = data  else { return }
            let yourDataModel = try? JSONDecoder().decode([DataModel].self, from: jsonData)
            guard let dataModels = mainPageContentData else { return } //dataModels is array of DataModel
            completion(.success(dataModels)) // And we send this array to completion blocks
        }
        }.resume()
}

你應該像這樣使用這個功能

        fetchData { (result) in //Trailing closure syntax
        switch result {
        case .failure(let error):
            print(error)
        case .success(let datas):
            for data in datas{
              print(data)
              }
         }
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM