當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSONModel的基本使用
生活随笔
收集整理的這篇文章主要介紹了
JSONModel的基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JSONModel 是一個庫,它能智能并且快速的創建出數據 model,你可以在你的 iOS 項目或者 OSX 項目上使用它。
使用前準備
添加 JSONModel 到你的工程中
1、需要的環境:
- ARC,iOS 5.0+ / OSX 10.7 +
- 引入框架SystemConfiguration.framework
2、獲取途徑:
1)、通過源文件獲取* 下載 JSONModel zip包* 將 JSONModel 文件夾拷貝到你的工程項目中* 將庫 SystemConfiguration.framework 添加上 2)、使用 Cocoa pods 來安裝:pod 'JSONModel'3、源碼的文檔:
源碼本身包含了類的文檔,你可以自己編譯后導入到你的Xcode中:
- 如果你還沒安裝 appledoc ,先安裝 appledoc
- 在Xcode上鍵入 appledoc 安裝文檔,在根目錄下
- 重啟Xcode
基本使用
假設你的 JSON 串像下面這樣子:
{"id":"10", "country":"Germany", "dialCode": 49, "isInEurope":true}- 創建一個你自己的類,并繼承至 JSONModel
- 在你的頭文件里面進行聲明你所需要的 JSON key值
.m文件中你不需要做其他的事情了.
初始化你的 model ,如下所示:
#import "CountryModel.h" ...NSString* json = (fetch here JSON from Internet) ... NSError* err = nil; CountryModel* country = [[CountryModel alloc] initWithString:json error:&err];如果傳過來的 JSON 合法,你所定義的所有的屬性都會與該 JSON 值相匹配,并且 JSONModel 也會嘗試盡可能的轉換成你所想要的數據,就像上面的例子:
- 轉化 "id",從字符串轉換成 int 型
- 拷貝 country 屬性的值
- 轉換 dialCode ,從NSNumber 轉換為 NSString 值
- 最后一個呢是將 isInEurope 轉換成 BOOL 的屬性
所以,你需要做的就是定義出你期望的屬性就行了。
例子
命名自動匹配
{"id": "123","name": "Product name","price": 12.95 } @interface ProductModel : JSONModel@property (assign, nonatomic) int id; @property (strong, nonatomic) NSString* name; @property (assign, nonatomic) float price;@end@implementation ProductModel@endmodel中含有其他的model
{"order_id": 104,"total_price": 13.45,"product" : {"id": "123","name": "Product name","price": 12.95} } @interface OrderModel : JSONModel@property (assign, nonatomic) int order_id; @property (assign, nonatomic) float total_price; @property (strong, nonatomic) ProductModel* product;@end@implementation OrderModel@endmodel中含有其他model的集合
{"order_id": 104,"total_price": 103.45,"products" : [{"id": "123","name": "Product #1","price": 12.95},{"id": "137","name": "Product #2","price": 82.95}] } @protocol ProductModel@end@interface ProductModel : JSONModel@property (assign, nonatomic) int id; @property (strong, nonatomic) NSString* name; @property (assign, nonatomic) float price;@end@implementation ProductModel@end@interface OrderModel : JSONModel@property (assign, nonatomic) int order_id; @property (assign, nonatomic) float total_price; @property (strong, nonatomic) NSArray<ProductModel>* products;@end@implementation OrderModel@end鍵值轉回匹配
{"order_id": 104,"order_details" : [{"name": "Product#1","price": {"usd": 12.95}}] } @interface OrderModel : JSONModel@property (assign, nonatomic) int id; @property (assign, nonatomic) float price; @property (strong, nonatomic) NSString* productName;@end@implementation OrderModel+ (JSONKeyMapper*)keyMapper {return [[JSONKeyMapper alloc] initWithDictionary:@{@"order_id": @"id",@"order_details.name": @"productName",@"order_details.price.usd": @"price"}]; }@end設置全局的鍵值轉回匹配
[JSONModel setGlobalKeyMapper:[[JSONKeyMapper alloc] initWithDictionary:@{@"item_id":@"ID",@"item.name": @"itemName"}] ];將下滑線轉換成首字母大寫
{"order_id": 104,"order_product" : @"Product#1","order_price" : 12.95 } @interface OrderModel : JSONModel@property (assign, nonatomic) int orderId; @property (assign, nonatomic) float orderPrice; @property (strong, nonatomic) NSString* orderProduct;@end@implementation OrderModel+ (JSONKeyMapper*)keyMapper {return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase]; }@end可以為空的屬性值
{"id": "123","name": null,"price": 12.95 } @interface ProductModel : JSONModel@property (assign, nonatomic) int id; @property (strong, nonatomic) NSString<Optional>* name; @property (assign, nonatomic) float price; @property (strong, nonatomic) NSNumber<Optional>* uuid;@end@implementation ProductModel@end忽略某些屬性
{"id": "123","name": null } @interface ProductModel : JSONModel@property (assign, nonatomic) int id; @property (strong, nonatomic) NSString<Ignore>* customProperty;@end@implementation ProductModel@end讓所有的屬性都可以有空的屬性值
@implementation ProductModel+ (BOOL)propertyIsOptional:(NSString*)propertyName {return YES; }@end將集合元素轉換成 model
{"order_id": 104,"total_price": 103.45,"products" : [{"id": "123","name": "Product #1","price": 12.95},{"id": "137","name": "Product #2","price": 82.95}] } @protocol ProductModel@end@interface ProductModel : JSONModel@property (assign, nonatomic) int id; @property (strong, nonatomic) NSString* name; @property (assign, nonatomic) float price;@end@implementation ProductModel@end@interface OrderModel : JSONModel@property (assign, nonatomic) int order_id; @property (assign, nonatomic) float total_price; @property (strong, nonatomic) NSArray<ProductModel, ConvertOnDemand>* products;@end@implementation OrderModel@end轉載于:https://www.cnblogs.com/iyou/p/4861666.html
總結
以上是生活随笔為你收集整理的JSONModel的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生英魂之刃主题信用卡年费是多少?怎么免
- 下一篇: 广发银行最值得办的信用卡 盘点广发的良心