我正在尝试从JSON文件中获取信息,下面是它的{ "question" : "https://www.sanfoh.com/uob/smile/data/s117b97da1ca0c9cbd2836d8af2n886.png" , "solution" : 6 }
内容
然而,每当我试图从它中提取信息时,我都会得到这个错误"typeMismatch(Swift.Array,Swift.DecodingError.Context(codingPath:[],debugDescription:“期望解码数组,但却找到了字典)。”underlyingError: 0)。“
这是我的密码
`
import Foundation
struct Game: Hashable, Codable {
let question: String
let solution: Int
}
class ViewModel: ObservableObject {
@Published var games: [Game] = []
func fetch() {
guard let url = URL(string: "https://marcconrad.com/uob/smile/api.php") else {
return
}
let task = URLSession.shared.dataTask(with: url) { [weak self] data, _, error in
guard let data = data, error == nil else {
return
}
do {
let games = try JSONDecoder().decode([Game].self, from: data)
DispatchQueue.main.async {
self?.games = games
print(games)
}
}
catch {
print(error)
}
}
task.resume()
}
}
`
我试过去掉方括号
`
let games = try JSONDecoder().decode(Game.self, from: data)
`
然而,我在这一行上得到了一个错误
self?.games = games
`
错误是“无法将”游戏“类型的值分配给”游戏“类型
发布于 2022-11-08 15:29:16
响应不是数组,而是字典。因此,您应该这样解析它:
let games = try JSONDecoder().decode(Game.self, from: data)
另外,您应该更新变量的类型,如
@Published var games: Game?
https://stackoverflow.com/questions/74363115
复制相似问题