JSON

Swift JSON 教程:使用 JSON

字号+ 作者:H5之家 来源:H5之家 2017-05-15 17:03 我要评论( )

原文:Swift JSON Tutorial: Working with JSON 作者:Luke Parham 译者:kmyhy 2017-1-15 更新说明:本教程由 Luke Parham 更新为 Xcode 8.2 和 Swift 3。原文

原文:Swift JSON Tutorial: Working with JSON
作者:Luke Parham
译者:kmyhy

2017-1-15 更新说明:本教程由 Luke Parham 更新为 Xcode 8.2 和 Swift 3。原文作者是 Attila Hegedüs。

JavaScript Object Notation,简称 JSON,是一种常用的和 web 服务进行数据传输的方式。它易于使用和阅读,因此使用者众多。

以下列 JSON 为例:

[ { ")

运行 app,控制台输出如下:

App(name: error { feed: Feed? // 2 entries: [App]? name: : ~~ json, ~~ json ~~ container, ~~ id }}

Feed 和 TopApps 都使用 optional 属性。但当我们确定 JSON 中某个值肯定存在时,可以用非 optional 的属性。

我们并不需要为 JSON 的每个成员都创建一个模型对象。例如,这里就没有为 in:name 和 id 创建模型对象。当我们使用非可空对象和嵌套对象时,一定要进行非空校验。

现在模型类已经准备好了,我们该让 Gloss 干活了!

打开 playground 文件,将它的内容替换为:

: Any guard { //3 success(data) } }}

这个方法和之前的方法很相似,但这次使用了 URLSession 从 iTunes 抓取数据。代码解释如下:

打开主 playground 文件,将这句 :

DataManager.getTopAppsDataFromFileWithSuccess { (data) -> Void in

替换为:

DataManager.getTopAppsDataFromItunesWithSuccess { (data) -> Void in

现在你可以从 iTunes 获得数据了。

保存文件,你可以查看当前最热门的游戏是什么了。我看到的仍然是 “Saga 糖果消除”。我真的喜欢糖果消除游戏。

App(name: "Candy Crush Saga", link: "https://itunes.apple.com/us/app/candy-crush-saga/id553834731?mt=8&uo=2")

你看到的可能和上面不同,因为苹果商店里的排行榜随时都在变。

通常人们不仅仅对排行榜的第一名感兴趣——他们会想了解整个排行榜的内容。你没有必要为此写码——只需要用这句:

topApps.feed?.entriesGloss 的底层机制

如你所见,在解析 JSON 数据时 Gloss 很好用,但它的底层机制是怎样的呢?

<~~ 是一个自定义操作符,用来执行一系列 Decoder.decode 函数。Gloss 内置了对许多类型的解码支持:

在本教程中,你严重依赖 Decodable 模型。如果你需要更复杂的对象,你可以扩展 Decoder 并实现你自己的解码功能。

当然 Gloss 还能将对象转换回 JSON。如果你想了解这部分内容,请参考 Encodable 协议。

结束

这里下载完成的 playground 项目。

如果你更愿意采用本文前半部分描述的苹果的解析方式,你可以看一下苹果的在 Swift 中使用 JSON。它最终演示了一个如何编写使用 JSON 数据的网络层的实例非常有用。

但是,如果你更喜欢 Gloss 的方法,则需要密切关注它的新版本发布,因为它还在开发阶段。

希望你喜欢本教程,也请阅读本站的其它 Swift 教程。有任何问题和建议,请在下面留言!

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Swift JSON教程:使用JSON

    Swift JSON教程:使用JSON

    2017-05-15 18:00

  • ABAP 中JSON格式的变换与解析

    ABAP 中JSON格式的变换与解析

    2017-05-14 16:02

  • JSONObject使用方法详解

    JSONObject使用方法详解

    2017-05-14 14:00

  • lib过滤属性

    lib过滤属性

    2017-05-14 14:00

网友点评
p