在解码 JSON 时面临为特定键定义类型的困难

问题描述 投票:0回答:1

我在下面添加的 JSON 中发现了一个关键

type

{
   "id": "B2CAA3C8-077B-4A49-B5BA-206709630138",
   "markAsDoneDate": null,
   "endDate": 735025126.41189,
   "type": {
       "barBasedHabit": {}
   },
   "createdAt": 726385126.411889
}

很难定义键的任何类型。我指定的任何内容都会给我一个 typeMismatch 错误。 有没有办法解码这种密钥?

swift codable decodable
1个回答
0
投票

解决方案取决于您的需求。 假设您有 BarBasedHabit 结构。 您可以创建“包装器”结构,例如HabitType

struct HabitType: Decodable {
    let barBasedHabit: BarBasedHabit
}

然后在父可解码结构中定义它。

struct JsonResponse: Decodable {
     let id: String
     let markAsDoneDate: Date?
     let endDate: TimeInterval
     let type: HabitType
     let createdAt: TimeInterval
 }

或者您可以将字典 [String:BarBasedHabit] 定义为类型,然后为硬编码的 String “barBasedHabit”取值。

struct JsonResponse: Decodable {
     let id: String
     let markAsDoneDate: Date?
     let endDate: TimeInterval
     let type: [String : BarBasedHabit]
     let createdAt: TimeInterval
}
© www.soinside.com 2019 - 2024. All rights reserved.