【问题标题】:What's the difference between using JSONSerialization and JSONDecoder in swift?在 swift 中使用 JSONSerialization 和 JSONDecoder 有什么区别?
【发布时间】:2019-10-13 13:23:12
【问题描述】:

在 swift 中使用 JSONSerialization 和 JSONDecoder 有什么区别,同时将 JSON 转换为 swift 模型?好像他们在做同样的工作。如果他们这样做,那么什么时候使用? 提前谢谢你

【问题讨论】:

  • 您应该始终使用JSONDecoder,因为它比JSONSerialization 更好,后者是一个Objective-C API。在 Swift 中使用 Objective-C API 感觉比使用纯 Swift 更尴尬,你不觉得吗?

标签: ios json swift


【解决方案1】:

Apple 提供了 JSONDecoder,这在 swift4 及更高版本中是一个巨大的缓解。我们可以在一行中解码 json。例如

{// sample from quicktype app online
"greeting": "Welcome to quicktype!",
"instructions": [
"Type or paste JSON here",
"Or choose a sample above",
"quicktype will generate code in your",
"chosen language to parse the sample data"
 ]
}
// MARK: - Welcome
struct Welcome: Codable {
let greeting: String
let instructions: [String]
}
//   let welcome = try? newJSONDecoder().decode(Welcome.self, from: jsonData)

欢迎使用符合可编码协议的结构。

如果您想手动解析 JSON 而不是使用 Codable,iOS 有一个内置的替代方案,称为 JSONSerialization。但我认为每个人都喜欢使用 JSONDecoder。 quicktype 还免费为 u 创建 json 模型 类或结构。 检查自己。

【讨论】:

    【解决方案2】:

    使用 JSONDecoder !

    如果我没记错的话,JSONDecoder 出现在 Xcode 9 和 Swift4 中。 对 JSON 进行编码和解码更加简洁高效。 为此,您的 Swift 类必须符合可解码协议。

    JSON 序列化是老派。 (和 Objective-C 一样)

    【讨论】:

      【解决方案3】:

      近年来,JSON 已成为在互联网上传输数据的最广泛使用的格式。在 iOS 开发领域,开发人员在 Swift 中处理 JSON 数据并将其用于构建 iOS 应用程序是很常见的。 SwiftyJSON 等一些很酷的库已经可以在 Swift 中处理 JSON 数据,并且这些库变得很流行,因为开发人员不需要处理 JSONSerialization 来解析 JSON 的不可读混乱。幸运的是,Swift 4 引入了令人惊叹的 Codable 协议作为 Foundation 框架的一部分,并且 JSON 解析变成了一行或几行代码。这是 Apple 完全支持的解决方案,可以轻松采用。它提供了对复杂场景进行编码和解码的自定义功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 2018-03-21
        相关资源
        最近更新 更多