json - 使用 Codable 解析 JSON 对象数组但跳过损坏的元素

标签 json swift parsing codable

<分区>

我从 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 中显示指向应用程序沙箱的文件选择器?

java - 如何将有序数据放入jsonObject中?

ios - UITableView:按部分中的日期和行中的时间对事件进行排序

部署 Tomcat6 JSF 应用程序时出现解析错误 - digester.Digester

php - 在 PHP 中解析 vBulletin BBCode

JavaScript、Ajax、php parsererror 以及如何获取 post Json?

java - 使用 Put 方法构建 JSONObject