在这篇博客中,你将学会用Gloss来解析JSON数据。项目中的JSON文件包含App Store排行榜上前25个app。
参考博客:
Swift Tutorial: Working with JSON
Swift方式解析JSON数据
用Gloss解析JSON数据
JSON对象映射(JSON Object Mapping)
对象映射(Object Mapping)是指将JSON对象转化成Swift对象。在定义了模型对象和相应的映射规则后,Gloss会为你解析JSON数据。好处在于:
- 代码简洁
- 直接操作对象而不是字典和数组
- 可通过扩展model class来添加新功能
解析本地JSON数据
-
定义模型对象
模型对象必须遵守Decodable协议,这样才能解析JSON数据。
1.新建一个文件TopApps.swift,在里面创建data model。那么<~~表示什么呢?它是编码运算符(Encode Operator),能让Gloss将key为”feed“的值解码。
2.新建文件Feed.swift,在里面定义Feed
3.定义App模型对象,它代表JSON文件中的一个app
上面两个模型对象的属性是可选的,但是这里定义的两个属性都是non-optional的,所以我们需要检查它是否为nil。
-
使用Gloss
在playground里,添加以下代码
在控制台里,你可以看到
console
解析远程JSON数据
打开DataManage.swift,声明TopAppURL。
从URL加载数据。
用optional binding确保data存在。
将data传到success闭包里。
Gloss底层浅析
刚才用到的<~~其实是Decoder.decode函数的一种运算符。Gloss有很多种解码函数:
- 普通类型(Decoder.decode)
- 可解码的model(Decoder.decodeDecodable)
- 普通数组(Decoder.decode)
- 可解码model类型的数组(Decoder.decodeDecodableArray)
等等,这里就不列举了。
对于Gloss来说,Decodable model这个概念很重要。
项目地址