问题描述
尝试解码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
排除在解码之外。