首页 > 解决方案 > 尝试从 json 文件解码数据时出错

问题描述

使用我的 API 调用获取数据时,Json 数据返回编码键错误。我获取了 json 数据中的数组值,但是对于每个值,即使我从列表中删除了数组,我也会收到每个数组的编码键错误。

      keyNotFound(CodingKeys(stringValue: "strMeal", intValue: nil), 
     Swift.DecodingError.Context(codingPath: [], debugDescription: "No value 
      associated with key CodingKeys(stringValue: \"strMeal\", intValue: 
     nil) (\"strMeal\").", underlyingError: nil))

Json 文件不返回任何编码密钥,因为我已使用https://app.quicktype.io/解析数据 这是我使用的 API 端点https://www.themealdb.com/api/json/ v1/1/filter.php?c=牛肉

谁能告诉我我的 fetchJson 函数或我创建的数组做错了什么?

            import UIKit
            @MainActor

         class HomeViewController: UIViewController, ObservableObject {
         @IBOutlet weak var TableView: UITableView!
         var meals = [Meal]()
         override func viewDidLoad() {
         super.viewDidLoad()
    
              fetchJSON {
            print("APICompleted")
        
              }
            }

           func fetchJSON(completed: @escaping () -> ()) {
        let url = URL(string: 
       "https://www.themealdb.com/api/json/v1/1/filter.php?c=Beef")!
       URLSession.shared.dataTask(with: url) { data, response, error in
        
            if error == nil {
                 do {
                let meals = try JSONDecoder().decode(Meal.self, from:  data!)
                DispatchQueue.main.async {
                    completed()
                }
            }catch {
                print(error)
            }
            }
             }.resume()
           }
        }

             List of arrays 

                     import Foundation


           struct MealDetailResponse: Decodable {
           let meals: [Meal]
              }

          struct Meal: Decodable {
 
            let strMeal: String
            let strMealThumb: String
            let idMeal: String
          }
     

标签: jsonswift

解决方案


推荐阅读