iOS JSOnModel使用
2885 ワード
JSOnModelは、jsonトランスモデルのサードパーティオープンソースライブラリです.サーバにリクエストを送信すると、JSOnModelでデータをModelに変換すると便利です.
基本的な使い方
例えばこのjsonデータ
次のモデルを定義します.mでは何も処理しなくてもよい
jsonデータから、サーバが私たちに与えたデータ型はすべて一致していることがわかりますが、私たちが定義したデータモデルにはint、double、float、NSStringの4種類があり、私たちは何の処理も必要ありません.JSOnModelは自動的に変換してくれます. JSOnModelを使用する場合は、必要なサーバ属性が返されているかどうかを確認する必要はありません.JSOnModelのinitWithDictionaryメソッドは自動的にチェックして処理します. 有効性チェックは、指定したサーバが返すフィールドが返されず、必要である場合、以下のように書くと例外が投げ出されます.
一般的に、サーバの値が返されていないためにプログラムをクラッシュさせたくないので、キーワードOptionalを追加します.こんな風に
各プロパティを追加したくない場合は、mファイルへの書き換え方法
modelに値を割り当てるには、次の方法を使用します.
得られたモデルについては、次のような方法で辞書に変換することができます.
モデルネスト
モデル結合
ここに他人のもっと詳しい説明を添付します.
pod 'JSONModel'
基本的な使い方
例えばこのjsonデータ
{
"first" : 1,
"second": 2,
"third" : 3,
"fourth": 4
}
次のモデルを定義します.mでは何も処理しなくてもよい
#import
@interface OneModel : JSONModel
@property (nonatomic,assign)int first;
@property (nonatomic,assign)double second;
@property (nonatomic,assign)float third;
@property (nonatomic,copy)NSString* fourth;
@end
jsonデータから、サーバが私たちに与えたデータ型はすべて一致していることがわかりますが、私たちが定義したデータモデルにはint、double、float、NSStringの4種類があり、私たちは何の処理も必要ありません.JSOnModelは自動的に変換してくれます.
JSONValueTransformer
NSMutableString NSString
NSMutableArray NSArray
NS(Mutable)Array NSDictionary
NSSet NSArray
BOOL number/string
string number
string url
string time zone
string date
number date
//this property is required
@property (nonatomic,copy) NSString* fourth;
。
一般的に、サーバの値が返されていないためにプログラムをクラッシュさせたくないので、キーワードOptionalを追加します.こんな風に
@property (nonatomic,copy) NSString* fourth;
各プロパティを追加したくない場合は、mファイルへの書き換え方法
+(BOOL)propertyIsOptional:(NSString *)propertyName{
return YES;
}
modelに値を割り当てるには、次の方法を使用します.
// responseObject[@"data"]
OneModel *model = [[OneModel alloc]initWithDictionary:responseObject[@"data"] error:nil];
得られたモデルについては、次のような方法で辞書に変換することができます.
-(NSDictionary*)toDictionary;
モデルネスト
#import
#import "TwoModel.h"
@interface OneModel : JSONModel
@property (nonatomic,assign)int first;
@property (nonatomic,assign)double second;
@property (nonatomic,assign)float third;
@property (nonatomic,copy)NSString* fourth;
@property (nonatomic,strong)TwoModel* twoModel;
@end
モデル結合
#import
@protocol OneModel//
@end
@interface OneModel : JSONModel
@property (nonatomic,assign)int first;
@property (nonatomic,assign)double second;
@property (nonatomic,assign)float third;
@property (nonatomic,copy)NSString* fourth;
@end
@interface ThreeModel : JSONModel
@property (nonatomic,assign)NSString* id;
@property (nonatomic,strong)NSArray* one;
@end
#import "OneModel.h"
@implementation OneModel
@end
@implementation ThreeModel
@end
ここに他人のもっと詳しい説明を添付します.