日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSONModel的基本使用

發布時間:2023/12/13 javascript 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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值
#import "JSONModel.h"@interface CountryModel : JSONModel@property (assign, nonatomic) int id; @property (strong, nonatomic) NSString* country; @property (strong, nonatomic) NSString* dialCode; @property (assign, nonatomic) BOOL isInEurope;@end

.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@end

model中含有其他的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@end

model中含有其他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的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。