Jastor解析原理初探

Jastor是一个用于处理Server返回的Json数据的iOS第三方库,依赖KVC进行dictionary解析,并通过NSCoding实现序列化。其核心包括两个文件:Jastor和JastorRuntimeHelper,分别负责解析和提供运行时支持。通过在运行时获取类属性,匹配并设置JSON字典中的值,实现模型填充。JastorRuntimeHelper提供属性读写检查、属性类型获取及所有属性名列表等功能,简化了模型到字典及字典到模型的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值