我试图从JSON文件中获取信息,这里是它的内容{ "question" : "https://www.sanfoh.com/uob/smile/data/s117b97da1ca0c9cbd2836d8af2n886.png" , "solution" : 6 }
然而,每次我试图从中获取信息时,我都会得到这个错误"typeMismatch(斯威夫特。数组,Swift.DecodingError。上下文(codingPath: [], debugDescription: "期望解码数组,但发现一个字典。",底层错误:nil))">
我的代码
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
错误提示"不能将类型'游戏'的值分配给类型'[游戏]'
响应不是一个数组,而是一个字典。所以你应该这样解析:
let games = try JSONDecoder().decode(Game.self, from: data)
同时,您应该更新变量的类型,如
@Published var games: Game?