迅速使用JSONSerialization和JSONDecoder有什么区别?

时间:2019-10-13 13:23:12

标签: ios json swift

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

3 个答案:

答案 0 :(得分:1)

近年来,JSON已成为在Internet上传输数据的最广泛使用的格式。在iOS开发领域中,开发人员通常会在Swift中使用JSON数据并将其用于构建iOS应用。 Swifty中已经有一些很酷的库可以在Swift中处理JSON数据,这些库之所以流行,是因为开发人员无需使用JSONSerialization处理难以理解的混乱来解析JSON。幸运的是,Swift 4作为Foundation框架的一部分引入了令人惊叹的Codable协议,并且JSON解析成为一行或两行代码。这是Apple完全支持的解决方案,可以轻松采用。它提供了定制功能,可以轻松编码和解码复杂的场景。

答案 1 :(得分:0)

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 :(得分:-1)

使用JSONDecoder!

如果我没记错的话,JSONDecoder和Swift4一起出现在Xcode 9中。 编码和解码JSON更加干净高效。 为此,您的Swift类必须符合“可解码协议”。

JSON序列化是老派。 (类似于Objective-C)