当其中一些对象无法正确解码时,有没有办法解码作为对象列表的JSON?假设我有一个enum
,其中包含两个可能的值foo
和bar
,但所有突然后端都会开始为该字段返回另一个可能的选项(假设为other
)。< / p>
看下面的例子,第一部分没问题。我想要的是在第二部分中包含一个包含1个元素(foo
)的列表,而不是nil
。
import Foundation
enum Value: String, Codable {
case foo
case bar
}
struct Object: Codable {
let value: Value
}
let dataList = "[{\"value\":\"foo\"}, {\"value\":\"bar\"}]".data(using: .utf8)!
let objectList = try? JSONDecoder().decode([Object].self, from: dataList) // [{foo}, {bar}]
let anotherDataList = "[{\"value\":\"foo\"}, {\"value\":\"other\"}]".data(using: .utf8)!
let anotherObjectList = try? JSONDecoder().decode([Object].self, from: anotherDataList) // nil
// is there a way to have this ^ as [{foo}] instead of nil?