UDN-企业互联网技术人气社区

板块导航

浏览  : 787
回复  : 0

[干货] 全新 iOS 高性能的 Json 与 Model 互转开源库

[复制链接]
葡萄柚的头像 楼主
发表于 2016-12-18 10:43:08 | 显示全部楼层 |阅读模式
  性能测试

  Time lost (Benchmark 1000 times)
1.png

  查看性能测试请运行项目: Benchmark/ModelBenchmark.xcodeproj

  要求

  • iOS 6.0 or later
  • Xcode 8.0 or later

  集成

  • 使用CocoaPods:
  • pod 'WHC_Model', '~> 1.6.0'
  • 手工集成:
  • 导入文件夹WHC_ModelKit

  用法

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

  二,model -> json
  1. NSString * modelString = [model whc_Json];
  2.     NSLog(@"modelString = %@\n\n\n",modelString);
复制代码

  三,model - > NSDictionary
  1. NSDictionary * modelDict = [model whc_Dictionary];
  2.     NSLog(@"modelDict = %@\n\n\n",modelDict);
复制代码

  四,指定路径只解析Head对象
  1. Head * head = [Head whc_ModelWithJson:jsonString keyPath:@"Head"];
  2.     NSLog(@"head = %@\n\n\n",head);
复制代码

  五,指定路径只解析ResponseBody对象
  1. ResponseBody * body = [ResponseBody whc_ModelWithJson:jsonString keyPath:@"ResponseBody"];
  2.     NSLog(@"ResponseBody = %@\n\n\n",body);
复制代码

  六,指定路径只解析PolicyRuleList集合中第一个对象
  1. PolicyRuleList * rule = [PolicyRuleList whc_ModelWithJson:jsonString keyPath:@"ResponseBody.PolicyRuleList[0]"];
  2.     NSLog(@"rule = %@\n\n\n",rule);
复制代码

  七,归档对象
  1. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:body];
  2.     NSLog(@"data = %@\n\n\n",data);
复制代码

  八,解归档对象
  1. ResponseBody * body = [NSKeyedUnarchiver unarchiveObjectWithData:data];
  2.     NSLog(@"body = %@\n\n\n",body);
复制代码

  九,模型对象复制
  1. ResponseBody * copyBody = body.copy;
  2.     NSLog(@"copyBody = %@",copyBody);
复制代码

  推荐 

  WHC_DataModelFactory mac工具github地址: https://github.com/netyouli/WHC_DataModelFactory

  文档
  1. #pragma mark - json转模型对象 API -

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

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

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


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

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

  17. - (NSDictionary *)whc_Dictionary;

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

  21. - (NSString *)whc_Json;

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

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

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

  27. /// 反序列化模型对象
  28. - (void)whc_Decode:(NSCoder *)aDecoder;
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部