【发布时间】:2020-08-19 12:08:55
【问题描述】:
我正在从我的 JSON REST API 中检索一个复杂的嵌套对象。
DocumentDraft
- uuid: String
- schema: Schema // Very complicated object with many variations
- url: String
- values: [Value]
- successors: [String]
- predecessors: [String]
Value
- key: String
- val: String? OR [String]? // <-- This is the problem
我想解决这个问题的正确方法是引入一个泛型类型。
struct Value<V: Decodable>: Decodable {
let key: String
let val: V?
}
...但即便如此,values 可能是一个混合数组,所以我看不出声明 V 是什么会有帮助。
但是,当然,泛型类型会一直传播到层次结构中,传播到 DocumentDraft 对象、发布者、我的 API 调用等。污染了整个链,否则非常干净和可读的调用和对象.我只想在Value 的级别上处理这个问题,并让 JSONDecoder 以某种方式简单地返回两者之一。
是否有另一种方法可以在不更改整个父对象的情况下将可选的val 的两种可能性处理为String 或[String]?
【问题讨论】:
-
请发送您的 JSON 示例
-
您可以将
enum与关联值一起使用
标签: swift generics codable jsonencoder encodable