【发布时间】:2019-08-06 14:07:37
【问题描述】:
我正在用 swift Codable 解析这个 API
"total": 7,
"searchResult": [
null,
{
"name": "joe"
"family": "adam"
},
null,
{
"name": "martin"
"family": "lavrix"
},
{
"name": "sarah"
"family": "mia"
},
null,
{
"name": "ali"
"family": "abraham"
}
]
用这个PaginationModel:
class PaginationModel<T: Codable>: Codable {
var total: Int?
var data: T?
enum CodingKeys: String, CodingKey {
case total
case data = "searchResult"
}
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.total = try container.decodeIfPresent(Int.self, forKey: .total)
self.data = try container.decodeIfPresent(T.self, forKey: .data)
}
}
和User模特:
struct User: Codable {
var name: String?
var family: String?
}
我这样调用jsonDecoder 来解析API json:
let responseObject = try JSONDecoder().decode(PaginationModel<[User?]>.self, from: json)
现在我的问题是 null 在 searchResult 数组中。它解析正确,当我访问paginationModel 中的data 时,我在数组中找到了null。
解析API时如何忽略所有null,结果将是一个没有任何null的数组
【问题讨论】:
-
@user28434 我更新了我的问题
-
是的,这个?,它通常被解析为空。我想要一个没有空对象的数组
标签: json swift parsing codable swift4.2