关于id解码JSON的keynotfound

问题描述

尝试解码JSON时出现以下错误。奇怪的是,我在其他端点上使用了类似的代码,而使用UUID没问题。

错误

keyNotFound(CodingKeys(stringValue:“ id”,intValue:nil),Swift.DecodingError.Context(codingPath:[_JSONKey(stringValue:“ Index 0”,intValue:0)],debugDescription: “没有与键CodingKeys(stringValue:“ id”,intValue:nil)(“ id”)。(“ id”)。“关联的值,” underingantError:nil))

这是我的课程

class Api: ObservableObject {
@State private var showingalert = false

// completion handler for JSON Data
func getUserData(url: String,completion : @escaping ([runclubsv2])->()){

    let session = URLSession(configuration: .default)

    session.dataTask(with: URL(string: url)!) { (data,_,err) in

        if err != nil{

            print(err!.localizedDescription)
            return
        }
        //decoding JSON

        do {

            let users = try JSONDecoder().decode([runclubsv2].self,from: data!)
            print(users)
            //returning data
            completion(users)

        }
        catch{
            print(error)
        }
    }
.resume()
}

这是我的UI代码


    @State var runclubv2: [runclubsv2] = []

    var body: some View {
        vstack {
            if runclubv2.isEmpty{
                Text("damn it")
            }
            else {

                //display data
                List(runclubv2) { runclubv2 in
                    Text(runclubv2.name)
                }

            }

        }
        .onAppear{
            Api().getUserData(url: "<URL EndPoint>") { ([runclubsv2]) in
                self.runclubv2 = self.runclubv2
            }
        }
    }
}

这是响应数据

[
    {
        "name": "Joggers for Lagers","location": "Amor Artis Brewery,Fort Mill","date": "6:30 PM","category": "Monday"
    },{
        "name": "Old Armor Run Club","location": "Kannapolis","date": "6:00 PM","category": "Monday"
    }
]

解决方法

请仔细阅读JSON。密钥id在哪里?这正是错误消息所说的。

我想您的结构符合硬编码 UUID的Identifiable。如果是这样,您必须添加CodingKeys才能将id排除在解码之外。