Home

Awesome

WHC_Model

Build Status Pod Version Pod Platform Pod License 简介

性能测试

Time lost (Benchmark 1000 times) <img src = "https://github.com/netyouli/WHC_Model/blob/master/Result/b.png"> <img src = "https://github.com/netyouli/WHC_Model/blob/master/Result/a.png">

要求

集成

用法

json -> model

/// jsonString 是一个比较复杂3000行的json文件,具体参考demo
    ModelObject * model = [ModelObject whc_ModelWithJson:jsonString];
    NSLog(@"model = %@\n\n\n",model);

model -> json

    NSString * modelString = [model whc_Json];
    NSLog(@"modelString = %@\n\n\n",modelString);

model - > NSDictionary

    NSDictionary * modelDict = [model whc_Dictionary];
    NSLog(@"modelDict = %@\n\n\n",modelDict);

四,指定路径只解析Head对象

    Head * head = [Head whc_ModelWithJson:jsonString keyPath:@"Head"];
    NSLog(@"head = %@\n\n\n",head);

五,指定路径只解析ResponseBody对象

    ResponseBody * body = [ResponseBody whc_ModelWithJson:jsonString keyPath:@"ResponseBody"];
    NSLog(@"ResponseBody = %@\n\n\n",body);

六,指定路径只解析PolicyRuleList集合中第一个对象

    PolicyRuleList * rule = [PolicyRuleList whc_ModelWithJson:jsonString keyPath:@"ResponseBody.PolicyRuleList[0]"];
    NSLog(@"rule = %@\n\n\n",rule);

###七,归档对象

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:body];
    NSLog(@"data = %@\n\n\n",data);

八,解归档对象

    ResponseBody * body = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    NSLog(@"body = %@\n\n\n",body);

九,模型对象复制

    ResponseBody * copyBody = body.copy;
    NSLog(@"copyBody = %@",copyBody);

自定义别名

/// 模型类可自定义属性名称
+ (NSDictionary <NSString *, NSString *> *)whc_ModelReplacePropertyMapper {
    return @{<json key名: 替换实际属性名>};
}
/// 模型数组/字典元素对象可自定义类
+ (NSDictionary <NSString *, Class> *)whc_ModelReplaceContainerElementClassMapper {
    return @{替换实际属性名 : 实际类};
}
/// 模型类可自定义属性类型
+ (NSDictionary <NSString *, Class> *)whc_ModelReplacePropertyClassMapper {
    return @{替换实际属性名 : 实际类};
}

推荐

文档


#pragma mark - json转模型对象 Api -

/** 说明:把json解析为模型对象
 *@param json :json数据对象
 *@return 模型对象
 */
+ (id)whc_ModelWithJson:(id)json;

/** 说明:把json解析为模型对象
 *@param json :json数据对象
 *@param keyPath :json key的路径
 *@return 模型对象
 */

+ (id)whc_ModelWithJson:(id)json keyPath:(NSString *)keyPath;


#pragma mark - 模型对象转json Api -

/** 说明:把模型对象转换为字典
 *@return 字典对象
 */

- (NSDictionary *)whc_Dictionary;

/** 说明:把模型对象转换为json字符串
 *@return json字符串
 */

- (NSString *)whc_Json;

#pragma mark - 模型对象序列化 Api -

/// 复制模型对象
- (id)whc_Copy;

/// 序列化模型对象
- (void)whc_Encode:(NSCoder *)aCoder;

/// 反序列化模型对象
- (void)whc_Decode:(NSCoder *)aDecoder;

<a id="期待"></a>期待

Licenses

All source code is licensed under the MIT License.