You need to enable JavaScript to run this app. SwiftUI中加载自定义JSON列表不显示 控制台仅输出Error
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中加载自定义JSON列表不显示 控制台仅输出Error

问题排查与修复步骤
  • 首先替换模糊的错误日志,定位真实失败原因
    目前代码的catch块仅打印笼统的"Error",完全丢失了解码失败的具体上下文,直接将catch块的打印逻辑替换为输出完整错误对象,重新运行即可看到触发解码失败的具体原因:
    } catch {
        print("JSON解码详细错误:\(error)")
    }
    
  • 核对Codable结构与接口返回JSON的字段匹配度
    对照定义的Busso结构体,两类不匹配会直接触发解码失败:
    1. 字段类型不匹配:结构体中将id定义为UUID类型,但目标接口返回的id为纯数字格式,并非符合UUID规范的字符串,JSONDecoder默认无法将数字直接转换为UUID格式。需要将id的类型修改为和接口返回值一致的类型(如Int)。
    2. 字段可空性不匹配:结构体中所有属性均被定义为非可选String类型,但接口实际返回中部分扩展字段会输出null空值,非可选属性遇到空值会直接触发解码失败。需要给这类可能为空的字段增加可选标记,修改为String?类型。
      调整后的结构体参考:
    struct Busso: Codable, Identifiable {
        public var id: Int
        public var titolo: String
        public var autore: String
        public var testo: String
        public var data: String
        public var extra1: String?
        public var extra2: String?
        public var foto: String
        public var fotoUrl: String?
    }
    
  • 校验字段名映射关系
    如果详细错误日志提示找不到对应键值,需核对接口返回的JSON键名与结构体属性名的大小写是否完全一致,存在差异时可通过自定义CodingKeys建立映射关系,无需调整后端的JSON输出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 23:36:08