iOS开源JSON解析库MJExtension
iOS中JSON与NSObject互转有两种方式:1、iOS自带类NSJSONSerialization 2、第三方开源库SBJSON、JSONKit、MJExtension。项目中一直用MJExtension来进行JSON与Model的互转,非常方便、强大,接下来介绍一下这个轻量、强大的开源库。
1、什么是MJExtension?
MJExtension是一套字典和模型之间互相转换的轻量级开源框架,github地址为:GitHub - CoderMJLee/MJExtension: A fast。功能如下:
JSON --> Model、Core Data Model
JSONString --> Model、Core Data Model
Model、Core Data Model --> JSON
JSON Array --> Model Array、Core Data Model Array
JSONString --> Model Array、Core Data Model Array
Model Array、Core Data Model Array --> JSON Array
Model Coding(归档和接档)
MJExtension特性在于JSON与Model的互转,避免了用NSJSONSerialization或者SBJSON、JSONKit等非Model解析库把JSON解析出成NSDictionary后到处用valueForKey或者objectForKey方法获取字段相应值所带来的麻烦,尤其是要在不同类之间传输数据的时候,传Model比传NSDictionary这种方式实在是方便、优雅太多了
2、MJExtension架构
1)UML类图
2)类介绍
NSObject+MJKeyValue(Model辅助类,提供字典字段到Model相应的属性转换)
NSObject+MJProperty(Model辅助类,封装Model属性操作)
MJProperty(Model属性封装类)
MJType(Model属性类型封装类)
NSObject(MJCoding)(Model归档和解档封装类)
3、MJExtension JSON转Model流程图
4、MJExtension用法举例
关于用法详情请见:GitHub - CoderMJLee/MJExtension: A fast。我这里只介绍两种常用的用法,JSON转Model,JSON转Model数组
@interface PersonModel : NSObject
@property (nonatomic, copy) NSString* name;
@property (nonatomic, copy) NSString* sex;
@property (nonatomic, copy) NSString* age;
- (void)fetchPerson
{
__weak typeof(self)weakSelf = self;
fetchPersonRequest* request = [[fetchPersonRequest alloc] init];
[request startWithCompletionBlockWithSuccess:^(YTKBaseRequest *request) {
NSDictionary* dic = [request.responseString JSONObject]; // request.responseString JSONString->NSDictionary
if (dic && ([[dic valueForKey:@"result"] integerValue] == 0))
{
weakSelf.personModel = [PersonModel objectWithKeyValues:[dic valueForKey:@"data"]]; //personModel为PersonModel对象,跟后台约定data字段为字典
//weakSelf.personModelArr = [PersonModel objectArrayWithKeyValuesArray:[dic valueForKey:@"data"]]; //personModelArr为PersonModel数组,跟后台约定data字段为字典数组
}
}
原文链接:http://www.jianshu.com/p/5854081f052f
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
转载于:https://www.cnblogs.com/soulDn/p/5787559.html
iOS开源JSON解析库MJExtension相关推荐
- IOS中Json解析的四种方法
2019独角兽企业重金招聘Python工程师标准>>> 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此& ...
- 【转】IOS中Json解析的四种方法
原文网址:http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有 ...
- C++的Json解析库:jsoncpp和boost
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的j ...
- [转]C++的Json解析库:jsoncpp和boost
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的j ...
- C++的Json解析库:jsoncpp
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org/,本文不再对json做介绍,将重点介绍c++的 ...
- C++的Json解析库:jsoncpp和boost .
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org/,本文不再对json做介绍,将重点介绍c++的 ...
- ios json包含html,IOS中Json解析的四种方法
发现自己有很多文档,所以现在整理一下,以防忘了... 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此"http: ...
- gson解析天气json_几种常用JSON解析库性能比较
PS:公众号推文时间工作日早晨8点50分,周末下午3点30分,不见不散哈! 作者:飞污熊 xncoding.com/2018/01/09/java/jsons.html 本篇通过JMH来测试一下Jav ...
- 深入 Go 中各个高性能 JSON 解析库
深入 Go 中各个高性能 JSON 解析库 转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/535 其实本来我是没打算 ...
最新文章
- php pdo blob,PHP / PDO / MySQL:插入MEDIUMBLOB存储坏数据
- python绘图函数m_python绘图数据m
- JS实现2,8,10,16进制的相互转换
- 201671010406 丁家辉《英文文本统计分析》结对项目报告
- sql动态拼接<if>标签嵌套<foreach>判空、if失效等问题
- websocket 带头部信息请求 header_关于websocket跨域的一个奇怪问题
- 新分类!全总结!最新Awesome-SLU-Survey资源库开源!
- 2001年分区联赛提高组之二_数的划分_ssl1016_dfs
- Linux命令_搜索文件
- C/C++程序之根据有向图、无向图求通路、回路、可达矩阵
- Unity3d 周分享(22期 2019.8.30 )
- JAVAFX的webview中的webkit支持WindowsXP系统
- linux怎样安装麒麟双系统,win10系统装麒麟系统双系统的具体办法
- 画图软件origin-柱状图断点设置
- multisum 残留 there are no notifications for your products
- 使用 Abp.Zero 搭建第三方登录模块(一):原理篇
- 关于outlook 保存的.msg文件打开一次之后不能再次打开的问题
- Azure机器学习模型搭建
- 用MDA理论分析炉石的职业系统
- 做谷歌广告投放关键字英文,只懂英文可以吗?
热门文章
- Fragment提交transaction导致state loss异常
- Spring AOP详解(转载)所需要的包
- 批处理解决“易语言难题”
- Spring Initializr 构建Spring Boot/Cloud工程
- DotNetCore跨平台~System.DrawingCore部署Linux需要注意的
- 编译安装Zabbix 2.2 (LNMP环境)
- Android学习笔记之Android Studio添加新的Activity
- 业界对生成图片缩略图的做法归纳
- 商贸通服装鞋帽版客户端无法连接服务器的问题(自己遇到的,已解决)
- 关于C#中的DLLImport (引)