背景
JSON是移动开发中常用的应用层数据交换协议。最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本到具体的Model,再把对应数据展现到页面上。
但在编程的时候,处理JSON是一件麻烦事。在iOS开发中,在不引入任何轮子的情况下,通常需要先把JSON转为Dictionary,然后还要记住每个数据对应的Key,用这个Key在Dictionary中取出对应的Value来使用。而在手动解析的过程中,经常会犯很多的低价错误,比如Key拼写错误,类型错误,key的空值判断等。
为了解决这些问题,很多处理JSON的开源库应运而生。通过对比可以发现,这些开源库基本都需要具有两个主要的功能:
- 保持JSON语义,直接解析JSON,但通过封装使调用方式更优雅、更安全;
- 预定义Model类,将JSON反序列化为类实例,再使用这些实例;
其实,上面所说的两点也是移动开发中JSON解析框架必须具备的两点功能。而具备上面两点的第三方库通常有SwiftyJSON、ObjectMapper、JSONNeverDie、HandyJSON 等,而我们今天要讲的HandyJSON 是一款在Swift开发中使用的比较多的进行Model和JSON间的互相转换的开源库,该库由阿里巴巴技术团队研发,,已经过了大量的实战积累。
HandyJSON的优势在HandyJSON出现以前,在Swift中把JSON反序列化到Model类主要有两种方式:
- 让Model类继承自NSObject,