You need to enable JavaScript to run this app. SwiftUI解析JSON报错:预期解码Array却找到Dictionary该如何处理?
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI解析JSON报错:预期解码Array却找到Dictionary该如何处理?

解决步骤

你的JSON返回根节点是包含Count和myflies两个字段的字典,[SightingsL]类型的数组仅存在于myflies字段下,之前的写法没有匹配JSON的层级结构,按以下两步修改即可:

  1. 新增顶层响应结构体,和JSON根结构匹配:
struct SightingsResponse: Codable {
    let Count: Int
    let myflies: [SightingsL]
}
  1. 修改网络请求中的解码、赋值逻辑:
URLSession.shared.dataTask(with: request) {(data,response,error) in
    do {
        if let d = data {
            // 解码根层级的SightingsResponse结构体
            let decodedResponse = try JSONDecoder().decode(SightingsResponse.self, from: d)
            DispatchQueue.main.async { [self] in
                // 取myflies字段的数组赋值给sightingsL
                self.sightingsL = decodedResponse.myflies
            }
        }else {
            print("No Data")
        }
    } catch {
        print (error)
    }
}.resume()

注意事项

  • 确认你已经定义的SightingsL结构体已实现Codable协议,且内部属性名、类型和myflies数组下的字段完全匹配。如果字段命名规则不一致(比如Swift用小写开头驼峰命名userId,对应JSON的userID),需要在SightingsL中自定义CodingKeys做字段映射。

内容的提问来源于stack exchange,提问作者drago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 10:36:04