首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“希望能解码Array<Any>,但却找到了一本字典。”

“希望能解码Array<Any>,但却找到了一本字典。”
EN

Stack Overflow用户
提问于 2022-11-08 15:19:33
回答 1查看 35关注 0票数 0

我正在尝试从JSON文件中获取信息,下面是它的{ "question" : "https://www.sanfoh.com/uob/smile/data/s117b97da1ca0c9cbd2836d8af2n886.png" , "solution" : 6 }内容

然而,每当我试图从它中提取信息时,我都会得到这个错误"typeMismatch(Swift.Array,Swift.DecodingError.Context(codingPath:[],debugDescription:“期望解码数组,但却找到了字典)。”underlyingError: 0)。“

这是我的密码

`

代码语言:javascript
运行
复制
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()
    }
}

`

我试过去掉方括号

`

代码语言:javascript
运行
复制
                let games = try JSONDecoder().decode(Game.self, from: data)

`

然而,我在这一行上得到了一个错误

代码语言:javascript
运行
复制
                    self?.games = games

`

错误是“无法将”游戏“类型的值分配给”游戏“类型

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 15:29:16

响应不是数组,而是字典。因此,您应该这样解析它:

代码语言:javascript
运行
复制
let games = try JSONDecoder().decode(Game.self, from: data)

另外,您应该更新变量的类型,如

代码语言:javascript
运行
复制
@Published var games: Game?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74363115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档