iOS Json转换模型库:YYModel
iOS Json转换模型库:YYModel
其实在研究这个库之前,市面上已经有很多类似的模型序列化成JSON及反序列化库(如Mantle、MJExtension)了,推荐他只是因为他高端的性能和容错(错误对象类型赋值到属性时YYMODEL会尝试自动转换,避免Crash)以及低侵入(不需要你的MODEL类去继承某个基类、因为他是Category 方式来实现的)。作者号称对比性能如下:
接下来直接写一个小例子看如何使用:
1.首先准备JSON及对象如下:
{
"userName": "向阳",
"userPass": "xiang",
"age": 10,
"ident": [
{
"price": 100.56,
"priceDate": "1987-06-13 00:00:00"
},
{
"price": 100,
"priceDate": "1987-06-13"
}
]
}
模型:Ident
@interface Ident : NSObject
@property(nonatomic,strong) NSNumber* price;
@property(nonatomic,strong) NSDate* priceDate;
@end
#import "Ident.h"
@implementation Ident
@end
模型:User (对象有包含关系时,在包含类的中需要申明一个modelContainerPropertyGenericClass方法,并标明对应属性以及转换的对象类。如这里的User包含了Ident)
#import <Foundation/Foundation.h>
#import "Ident.h"
@interface User : NSObject
@property(nonatomic,strong)NSString* userName;
@property(nonatomic,strong)NSString* userPass;
@property(nonatomic,strong)NSNumber* age;
@property(nonatomic,strong)NSArray<Ident*>* ident;
@end
#import "User.h"
#import "Ident.h"
@implementation User
// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
+ (NSDictionary *)modelContainerPropertyGenericClass {
return @{@"ident" : [Ident class]};
}
@end
2.使用方法(yy_modelWithJSON、yy_modelToJSONObject)
yy_modelWithJSON:将 JSON (NSData,NSString,NSDictionary) 转换为 Model
yy_modelToJSONObject:将Model转换成NSDictionary以及NSArray
User *user = [User yy_modelWithJSON:jsonString];
NSLog(@"%@",user.ident[0].priceDate);
// 将 Model 转换为 JSON 对象:
NSDictionary *json = [user yy_modelToJSONObject];
iOS攻城狮社群
这段时间有很多朋友来咨询,iOS攻城狮社群什么时候成立?今天,我正式的宣布iOS攻城狮第一期社群正式开始招募!
iOS攻城狮社群将作为刚刚在线2016年重点打造的项目,我们将会投入更多的时间和人力来为社群的每一位成员提供更有价值的服务。
服务人群
想要学习iOS开发的大学生。
刚刚参加完培训出来的朋友。
iOS开发初学者。
加入iOS攻城狮社群你可以得到什么?
免费获取刚刚在线所有直播视频录像:我们现在每周都会有iOS开发技术直播课程,我们会把所有的直播视频收集起来,提供给iOS攻城狮社群成员学习。
基础入门:针对零基础的大学生,我们会直播和录制一些iOS开发入门的视频教程。
高级进阶:针对有基础的iOS开发者想要提供自己,我们会直播和录制在iOS开发中的一些常用的技术点。
项目讲解:很多公司在招聘iOS开发者的时候,都会问你会不会独立开发项目?有没有做过的项目案例?想必大家都深有体会。那么,刚刚在线将会把自己之前做的项目拿出来完整的讲解。我相信这是很多培训机构都做不到的事情。
独立博客:写博客的好处不用我在这里多说,独立博客就是一个小小的自媒体。如果你有自己的独立博客,对于以后找工作来说一定是加分的。刚刚在线将会安排专门的老师,手把手教大家如何建立自己的独立博客。
iOS攻城狮专属论坛:在开发的过程中,大家一定会碰到各种各样的问题。那么,我们就会把问题沉淀到iOS开发攻城狮专属论坛里。有些经典的问题你,我们会安排讲师进行详细的讲解。
除了上面的,时间条件允许的情况下,我们还会举行线下的私密聚会,一起喝咖啡,聊聊天,吹吹牛。 我本人一直在帮很多朋友介绍工作,刚刚在线后面会考虑于第三方招聘合作,为大家提供更多的工作机会。
报名费用
iOS攻城狮社群定价:999元/年 (这个费用相对于我们提供的服务来说一定是超值的)
为了感谢大家的支持,也为了让加入社群的朋友感觉物超所值,我们决定第一期费用再降低。
iOS攻城狮第一期定价:599/年。(折算下来一天不到2块钱)
大家可以计算一下,这个费用加起来还不够一个iOS工程师的工资。如果是为了赚这个钱,我们30位老师踏踏实实上班,一定比这赚的多得多。但是,我们依然要做这件事情,我们是真心的想去帮助更多的朋友学习iOS开发。
说的大一点,我们要做的是要颠覆现有的培训模式,让更多的朋友用最低的成本进入这个行业。我们理念是学习iOS开发本应该很简单。
支付方式
微信转账支付:chinaligang
支付宝转账支付:1606535851@qq.com
支付完成之后,请加我微信(私人号:chinaligang )告知,确定成功之后,我会拉你进入iOS攻城狮社群。
来吧,加入iOS攻城狮社群,愿大家除了思维上、技术上有所提高,更能成为网络上无话不谈的知心朋友!
也希望所有有缘能相聚于此群中的朋友,不仅仅把此群当成一个社群,而需要当成一个家!一起成长,一起进步!
iOS Json转换模型库:YYModel的更多相关文章
- iOS - JSON 数据解析
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
- json转换成对象
在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化 (转)
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: h ...
- json转换数据后面参数要带ture,代码
强大的PHP已经提供了内置函数:json_encode() 和 json_decode().很容易理解,json_encode()就是将PHP数组转换成Json.相反,json_decode()就是将 ...
- miniui datagrid 保存到服务端,使用.NET 自带 JSON 转换时发现日期格式不兼容。
使用 miniui datagrid 修改表格后,保存到服务端,然后使用 .NET 自带 JSON 转换,会抛出DateTime 内容“2015-12-27T11:02:28”未按 JSON 的要求以 ...
- 从零开始学android开发-Json转换利器Gson之实例
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: h ...
- Jackson框架,json转换
Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在线博文:http://www.cnblo ...
- json转换(c#后台生成json的方法)
此文转自:http://bbs.csdn.net/topics/380200497,为了方便自己记忆才以文章形式保存. using System; using System.Collections.G ...
- C#将XML转换成JSON转换XML
原文:C#将XML转换成JSON转换XML using System; using System.Collections.Generic; using System.Linq; using Syste ...
随机推荐
- MYSQL索引失效的各种情形总结
1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上,或者对索 ...
- Ribbon_窗体_实现Ribbon风格的窗体
Ribbon_窗体_实现Ribbon风格的窗体 随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格.那么我们如果要自己开发,应当怎么做呢? ...
- 提高IO性能
noatime - 不更新文件系统上 inode 访问记录,可以提升性能 [root@ok etc]# cat /etc/fstab |grep noatime /dev/mapper/vg_ok-l ...
- Tomcat热部署和虚拟目录配置
1.Tomcat如何配置热部署 默认就是 <Host appBase="webapps" autoDeploy="true" name="loc ...
- ***CI新增记录成功后的返回值判断,是用isset还是empty
Q: 新增记录插入成功后,加了一个return $this->db->insert_id(); $digg_id = $this->m_feed_digg->create(js ...
- hdu 2199:Can you solve this equation?(二分搜索)
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- Java Hour 12 Generic
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 本文作者Java 现经验约为12 Hour,请各位不吝赐教. 泛型程序设计 为 ...
- c++ 复习内容
. ]) { sizeof(str)=? } :// 函数行参仅是一个指针 . Typedef struct s* tPs; tPs p3,p4;//相等 struct s*p3,struct s*p ...
- H264码流打包分析
转自:http://www.360doc.com/content/13/0124/08/9008018_262076786.shtml SODB 数据比特串-->最原始的编码数据 RBSP ...
- HTML5小游戏【是男人就下一百层】UI美化版
之前写的小游戏,要么就比较简单,要么就是比较难看,或者人物本身是不会动的. 结合了其它人的经验,研究了一下精灵运动,就写一个简单的小游戏来试一下. 介绍一下几个主要的类: Frame:帧的定义,主要描 ...