<分区>
我从 JSON 传递了一堆对象,但结果发现其中一些对象具有空字符串而不是 URL。我的模型需要一个有效的 URL,我宁愿跳过不符合要求的对象,也不愿将 URL 属性设为可选。
事实证明这并不是那么简单。是否有一种内置方法可以从数组中跳过不可解码的对象?
<分区>
我从 JSON 传递了一堆对象,但结果发现其中一些对象具有空字符串而不是 URL。我的模型需要一个有效的 URL,我宁愿跳过不符合要求的对象,也不愿将 URL 属性设为可选。
事实证明这并不是那么简单。是否有一种内置方法可以从数组中跳过不可解码的对象?
最佳答案
事实证明这是一个关于a ticket in Swift 的未决问题.
我通过以下方式实现了发布在我的问题上的解决方法:
struct AnyCodable: Codable {}
struct Trending: Codable {
var data: [Gif]
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
var gifContainer = try container.nestedUnkeyedContainer(forKey: .data)
var gifs = [Gif]()
while !gifContainer.isAtEnd {
if let gif = try? gifContainer.decode(Gif.self) {
gifs.append(gif)
} else {
let skipped = try? gifContainer.decode(AnyCodable.self)
print("Skipping one \(skipped)")
}
}
self.data = gifs
}
}
关于json - 使用 Codable 解析 JSON 对象数组但跳过损坏的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174395/
相关文章:
ios - 自动完成搜索在从数据库中获取结果时变慢并占用内存
xcode - UIAlertController 无法显示 UIAlertView
java - 将 JSON 对象作为对象而不是字符串写入文件
ios - 如何在 ios 中显示指向应用程序沙箱的文件选择器?
ios - UITableView:按部分中的日期和行中的时间对事件进行排序
部署 Tomcat6 JSF 应用程序时出现解析错误 - digester.Digester
php - 在 PHP 中解析 vBulletin BBCode