![Logo](http://images.cnitblog.com/blog2015/497279/201505/051004316736641.png)
MJExtension
===
- A fast, convenient and nonintrusive conversion between JSON and model.
- 转换速度快、使用简单方便的字典转模型框架
GitHub:[CoderMJLee](https://github.com/CoderMJLee) | Blog:[mjios(Chinese)](http://www.cnblogs.com/mjios) | PR is welcome,or [feedback](mailto:richermj123go@vip.qq.com)
## Contents
* [Getting Started 【开始使用】](#Getting_Started)
* [Features 【能做什么】](#Features)
* [Installation 【安装】](#Installation)
* [Examples 【示例】](#Examples)
* [JSON -> Model](#JSON_Model)
* [JSONString -> Model](#JSONString_Model)
* [Model contains model](#Model_contains_model)
* [Model contains model-array](#Model_contains_model_array)
* [Model name - JSON key mapping](#Model_name_JSON_key_mapping)
* [JSON array -> model array](#JSON_array_model_array)
* [Model -> JSON](#Model_JSON)
* [Model array -> JSON array](#Model_array_JSON_array)
* [Core Data](#Core_Data)
* [Coding](#Coding)
* [Camel -> underline](#Camel_underline)
* [NSString -> NSDate, nil -> @""](#NSString_NSDate)
* [More use cases](#More_use_cases)
---
# <a id="Getting_Started"></a> Getting Started【开始使用】
## <a id="Features"></a> Features【能做什么】
- MJExtension是一套字典和模型之间互相转换的超轻量级框架
* `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`
* Coding all properties of model in one line code.
* 只需要一行代码,就能实现模型的所有属性进行Coding(归档和解档)
## <a id="Installation"></a> Installation【安装】
### From CocoaPods【使用CocoaPods】
```ruby
pod 'MJExtension'
```
### Manually【手动导入】
- Drag all source files under floder `MJExtension` to your project.【将`MJExtension`文件夹中的所有源代码拽入项目中】
- Import the main header file:`#import "MJExtension.h"`【导入主头文件:`#import "MJExtension.h"`】
```objc
MJExtension.h
MJConst.h MJConst.m
MJFoundation.h MJFoundation.m
MJProperty.h MJProperty.m
MJType.h MJType.m
NSObject+MJCoding.h NSObject+MJCoding.m
NSObject+MJProperty.h NSObject+MJProperty.m
NSObject+MJKeyValue.h NSObject+MJKeyValue.m
```
# <a id="Examples"></a> Examples【示例】
### <a id="JSON_Model"></a> The most simple JSON -> Model【最简单的字典转模型】
```objc
typedef enum {
SexMale,
SexFemale
} Sex;
@interface User : NSObject
@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) NSString *icon;
@property (assign, nonatomic) unsigned int age;
@property (copy, nonatomic) NSString *height;
@property (strong, nonatomic) NSNumber *money;
@property (assign, nonatomic) Sex sex;
@property (assign, nonatomic, getter=isGay) BOOL gay;
@end
/***********************************************/
NSDictionary *dict = @{
@"name" : @"Jack",
@"icon" : @"lufy.png",
@"age" : @20,
@"height" : @"1.55",
@"money" : @100.9,
@"sex" : @(SexFemale),
@"gay" : @"true"
// @"gay" : @"1"
// @"gay" : @"NO"
};
// JSON -> User
User *user = [User mj_objectWithKeyValues:dict];
NSLog(@"name=%@, icon=%@, age=%zd, height=%@, money=%@, sex=%d, gay=%d", user.name, user.icon, user.age, user.height, user.money, user.sex, user.gay);
// name=Jack, icon=lufy.png, age=20, height=1.550000, money=100.9, sex=1
```
### <a id="JSONString_Model"></a> JSONString -> Model【JSON字符串转模型】
```objc
// 1.Define a JSONString
NSString *jsonString = @"{\"name\":\"Jack\", \"icon\":\"lufy.png\", \"age\":20}";
// 2.JSONString -> User
User *user = [User mj_objectWithKeyValues:jsonString];
// 3.Print user's properties
NSLog(@"name=%@, icon=%@, age=%d", user.name, user.icon, user.age);
// name=Jack, icon=lufy.png, age=20
```
### <a id="Model_contains_model"></a> Model contains model【模型中嵌套模型】
```objc
@interface Status : NSObject
@property (copy, nonatomic) NSString *text;
@property (strong, nonatomic) User *user;
@property (strong, nonatomic) Status *retweetedStatus;
@end
/***********************************************/
NSDictionary *dict = @{
@"text" : @"Agree!Nice weather!",
@"user" : @{
@"name" : @"Jack",
@"icon" : @"lufy.png"
},
@"retweetedStatus" : @{
@"text" : @"Nice weather!",
@"user" : @{
@"name" : @"Rose",
@"icon" : @"nami.png"
}
}
};
// JSON -> Status
Status *status = [Status mj_objectWithKeyValues:dict];
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
// text=Agree!Nice weather!, name=Jack, icon=lufy.png
NSString *text2 = status.retweetedStatus.text;
NSString *name2 = status.retweetedStatus.user.name;
NSString *icon2 = status.retweetedStatus.user.icon;
NSLog(@"text2=%@, name2=%@, icon2=%@", text2, name2, icon2);
// text2=Nice weather!, name2=Rose, icon2=nami.png
```
### <a id="Model_contains_model_array"></a> Model contains model-array【模型中有个数组属性,数组里面又要装着其他模型】
```objc
@interface Ad : NSObject
@property (copy, nonatomic) NSString *image;
@property (copy, nonatomic) NSString *url;
@end
@interface StatusResult : NSObject
/** Contatins status model */
@property (strong, nonatomic) NSMutableArray *statuses;
/** Contatins ad model */
@property (strong, nonatomic) NSArray *ads;
@property (strong, nonatomic) NSNumber *totalNumber;
@end
/***********************************************/
// Tell MJExtension what type model will be contained in statuses and ads.
[StatusResult mj_setupObjectClassInArray:^NSDictionary *{
return @{
@"statuses" : @"Status",
// @"statuses" : [Status class],
@"ads" : @"Ad"
// @"ads" : [Ad class]
};
}];
// Equals: StatusResult.m implements +mj_objectClassInArray method.
NSDictionary *dict = @{
@"statuses" : @[
@{
@"text" : @"Nice weather!",
@"user" : @{
@"name" : @"Rose",
@"icon" : @"nami.png"
}
},
@{
@"text" : @"Go camping tomorrow!",
@"user" : @{
@"name" : @"Jack",
@"icon" : @"lufy.png"
}
}
],
@"ads" : @[
@{
@"image" : @"ad01.png",
@"url" : @"http://www.ad01.com"
},
@{
@"image" : @"ad02.png",
@"url" : @"http://www.ad02.com"
}
],
@"totalNumber" : @"2014"
};
// JSON -> StatusResult
StatusResult *result = [StatusResult mj_objectWithKeyValues:dict];
NSLog(@"totalNumber=%@", result.totalNumber);
// totalNumber=2014
// Printing
for (Status *status in result.statuses) {
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
}
// text=Nice weather!, name=Rose, icon=nami.png
// text=Go camping tomorrow!, name=Jack, icon=lufy.png
// Printing
for (Ad *ad in result.ads) {
NSLog(@"image=%@, url=%@", ad.image, ad.url);
}
// image=ad01.png, url=http://www.ad01.com
// image=ad02.png, url=http://www.ad02.com
```
### <a id="Model_name_JSON_key_mapping"></a> Model name - JSON key mapping【模型中的属性名和字典中的key不相同(
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
阿里云身份证识别demo_AliCloudIDCardRecognitionDemo.zip (120个子文件)
MBProgressHUD.h 17KB
NSObject+MJKeyValue.h 10KB
HttpUtil.h 8KB
NSObject+MJProperty.h 3KB
NSObject+MJClass.h 3KB
SignUtil.h 3KB
MJExtensionConst.h 2KB
PhotoTool.h 2KB
AppConfiguration.h 2KB
MJProperty.h 2KB
LCProgressHUD.h 1KB
ContentType.h 1KB
HttpHeader.h 1KB
NSString+MJExtension.h 1KB
Constants.h 1KB
MJPropertyType.h 1KB
HttpMethod.h 1KB
NSObject+MJCoding.h 1KB
AppInclude.h 1KB
HttpSchema.h 963B
XYAlertController.h 797B
SystemHeader.h 787B
MJPropertyKey.h 680B
MJExtension.h 517B
AppDelegate.h 295B
MJFoundation.h 259B
ViewController.h 233B
NSString+MJExtension.h 55B
NSString+MJExtension.h 55B
NSObject+MJKeyValue.h 54B
NSObject+MJProperty.h 54B
NSObject+MJKeyValue.h 54B
NSObject+MJProperty.h 54B
NSObject+MJCoding.h 52B
LCProgressHUD.h 52B
NSObject+MJCoding.h 52B
LCProgressHUD.h 52B
MJExtensionConst.h 51B
NSObject+MJClass.h 51B
MJExtensionConst.h 51B
NSObject+MJClass.h 51B
MJPropertyType.h 49B
MJPropertyType.h 49B
MJPropertyKey.h 48B
MJPropertyKey.h 48B
MJFoundation.h 47B
MJFoundation.h 47B
MJExtension.h 46B
MJExtension.h 46B
MJProperty.h 45B
MJProperty.h 45B
MBProgressHUD.h 38B
MBProgressHUD.h 38B
Contents.json 753B
Contents.json 336B
Contents.json 62B
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
Manifest.lock 438B
Podfile.lock 438B
MBProgressHUD.m 33KB
NSObject+MJKeyValue.m 25KB
HttpUtil.m 17KB
NSObject+MJProperty.m 10KB
PhotoTool.m 10KB
SignUtil.m 7KB
NSObject+MJClass.m 5KB
MJProperty.m 5KB
LCProgressHUD.m 4KB
NSString+MJExtension.m 3KB
MJPropertyType.m 2KB
AppDelegate.m 2KB
NSObject+MJCoding.m 2KB
MJFoundation.m 1KB
XYAlertController.m 1KB
ViewController.m 1KB
AliCloudIDCardRecognitionDemoUITests.m 1KB
AliCloudIDCardRecognitionDemoTests.m 983B
MJExtensionConst.m 885B
MJPropertyKey.m 648B
main.m 352B
Pods-AliCloudIDCardRecognitionDemo-dummy.m 172B
LCProgressHUD-dummy.m 130B
MBProgressHUD-dummy.m 130B
MJExtension-dummy.m 126B
Pods-AliCloudIDCardRecognitionDemo-acknowledgements.markdown 3KB
README.md 15KB
README.md 5KB
README.md 353B
README.mdown 6KB
project.pbxproj 45KB
project.pbxproj 31KB
PrecompiledHeader.pch 668B
MJExtension-prefix.pch 48B
LCProgressHUD-prefix.pch 48B
MBProgressHUD-prefix.pch 48B
Pods-AliCloudIDCardRecognitionDemo-acknowledgements.plist 5KB
Info.plist 1KB
Info.plist 680B
共 120 条
- 1
- 2
资源评论
好家伙VCC
- 粉丝: 1476
- 资源: 6774
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机器学习大作业,人脸识别-运用BP神经网络实现性别检测+源代码+文档说明+pdf报告
- 基于Arduino平台的ADNS-3080光流传感器库
- 基于Matlab界面GUI设计的图像处理设计[Matlab界面GUI设计].zip
- 基于Matlab界面GUI设计的贪吃蛇[Matlab界面GUI ].zip
- 基于Matlab界面GUI设计的数字图像处理[Matlab界面GUI设计].zip
- 机器学习期末大作业/课程设计-六次大作业合集代码+实验报告(满分项目)
- 点云实例分割-Softgroup-训练自己数据集程序
- 基于SpringBoot+Vue.JS前后端分离的图书进销存管理系统 源码+数据库+论文(毕业设计)
- 人工智能-项目实践-朴素贝叶斯分类器-朴素贝叶斯文本分类器源码+实验报告(大作业&课设)
- unity 射击游戏的特效资源包,从网站下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功