Jastor是新项目中用来处理Server获取得Json数据得第三方库。它使用KVC直接解析dictionary,通过遵守NSCoding协议来实现数据的序列化,方便保存到本地。
Jastor库总共有两个文件Jastor、JastorRuntimeHelper,Jastor是用来解析Json,JastorRuntimeHelper是在解析过程中提供runtime支持。
首先Jastor的原理。Jastor提供了三个方法,其中,initWithDictionary:和objectFromDictionary:都是用来解析Json的方法,toDictionary方法是将自己转换成Dictionary。objectFromDictionary:类方法,在alloc之后直接调用initWithDictionary:方法来解析Json字典。
它的原理大致是这样,先通过JastorRuntimHelper在runtime时获取[self class]的所有属性的key,然后根据这些key去从拥有同样key的Json字典中获取对应的value,然后通过KVC的setValue:ForKey:方法设置model的数据。Jastor只能判断基于key-value的字典和数组。toDictionary方法则时是将这一过程的逆向工作,将model的变成字典保存。
JastorRuntimeHelper提供了三个方法:
+ (BOOL)isPropertyReadOnly:(Class)klass propertyName:(NSString*)propertyName;
+ (Class)propertyClassForPropertyName:(NSString *)propertyName ofClass:(Class)klass;
+ (NSArray *)propertyNames:(Class)klass;
第一个,用来判断model的属性是否是只读的;第二个用来获取model的propertyName的类;第三个则是用来获取model的所有的属性名。
主要用到了runtime.h的几个相应的方法,在运行时获取当前model类的属性相关信息。
Jastor的用法,model必须是继承于Jastor,然后调用Jastor的objectFromDictionary或者initWithDictionary方法解析相应的Dictionary。
具体的使用方法,及源代码下载地址如下:
https://github.com/elado/jastor