You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4:解析JSON到Codable结构体,添加JSON外的额外变量

解决Codable结构体添加非JSON字段的问题

这问题我之前也碰到过,其实处理起来很简单——核心就是让Codable协议在编码/解码过程中忽略这个不属于JSON的额外属性。你的代码里已经给favorite设了默认值false,不过为了更清晰可靠,推荐显式声明CodingKeys枚举来指定需要处理的JSON字段:

struct LoanUser: Codable { 
    let name: String 
    let use: String 
    let location: Location 
    let loan_amount: Int 
    let image: Image 
    var favorite: Bool = false 
    
    // 只列出JSON中存在的字段,自动忽略favorite
    enum CodingKeys: String, CodingKey {
        case name, use, location, loan_amount, image
    }
}

为什么要这么做?

  • 显式的CodingKeys会告诉Codable只处理枚举内的属性,favorite不在其中,所以解码时不会尝试从JSON读取它,编码时也不会把它写入输出。
  • 虽然Swift 5.1+支持带默认值的属性自动被Codable忽略,但显式声明CodingKeys的方式更直观,也能避免后续修改结构体时出现意外问题(比如新增属性时不小心影响Codable行为)。

如果你的Location和Image结构体也遵循Codable,那整个解码流程完全不受影响,favorite会一直保持默认的false,你也可以在后续逻辑里手动修改它的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:09:02