{"id":13849025,"url":"https://github.com/netyouli/WHC_Model","last_synced_at":"2025-07-12T15:32:40.572Z","repository":{"id":31448853,"uuid":"35012641","full_name":"netyouli/WHC_Model","owner":"netyouli","description":"iOS平台高效转换引擎json-\u003emodel,model-\u003ejson,model-\u003eDictionary,支持模型类继承其他模型类,支持指定路径转换,不区分json的key和模型属性名称大小写,自动处理json中null","archived":false,"fork":false,"pushed_at":"2021-04-13T14:10:37.000Z","size":1563,"stargazers_count":248,"open_issues_count":5,"forks_count":50,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-06-21T17:44:36.654Z","etag":null,"topics":["json","json-parser","jsonmodel","model","whc"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netyouli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-04T03:44:35.000Z","updated_at":"2025-03-28T08:40:53.000Z","dependencies_parsed_at":"2022-08-07T16:16:06.317Z","dependency_job_id":null,"html_url":"https://github.com/netyouli/WHC_Model","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/netyouli/WHC_Model","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netyouli%2FWHC_Model","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netyouli%2FWHC_Model/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netyouli%2FWHC_Model/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netyouli%2FWHC_Model/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netyouli","download_url":"https://codeload.github.com/netyouli/WHC_Model/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netyouli%2FWHC_Model/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265013515,"owners_count":23698055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json","json-parser","jsonmodel","model","whc"],"created_at":"2024-08-04T19:01:05.989Z","updated_at":"2025-07-12T15:32:40.055Z","avatar_url":"https://github.com/netyouli.png","language":"Objective-C","funding_links":[],"categories":["Objective-C"],"sub_categories":[],"readme":"WHC_Model\n==============\n![Build Status](https://api.travis-ci.org/netyouli/WHC_Model.svg?branch=master)\n[![Pod Version](http://img.shields.io/cocoapods/v/WHC_Model.svg?style=flat)](http://cocoadocs.org/docsets/WHC_Model/)\n[![Pod Platform](http://img.shields.io/cocoapods/p/WHC_Model.svg?style=flat)](http://cocoadocs.org/docsets/WHC_Model/)\n[![Pod License](http://img.shields.io/cocoapods/l/WHC_Model.svg?style=flat)](https://opensource.org/licenses/MIT)\n简介\n==============\n- **高效**: 深度递归高性能解析架构,性能超过目前主流JsonModel，MJExtension...\n- **继承**: 支持model类继承其他model类\n- **安全**: 自动处理json中的null\n- **优势**: 高容错能力(model类属性名称和json里key名称不区分大小写)\n- **强大**: 支持自定义模型类属性名称以及类型别名设置\n- **特性**: 支持反射指定json路径key来解析指定的节点json对象\n- **嵌套**: 支持json或者model类的无限嵌套,json-\u003emodel ,model-\u003ejson的转换\n- **附加**: 支持模型对象归档解档以及copy操作\n\n性能测试\n==============\nTime lost (Benchmark 1000 times)\n\u003cimg src = \"https://github.com/netyouli/WHC_Model/blob/master/Result/b.png\"\u003e\n\u003cimg src = \"https://github.com/netyouli/WHC_Model/blob/master/Result/a.png\"\u003e\n\n* 查看性能测试请运行项目： Benchmark/ModelBenchmark.xcodeproj \n\n要求\n==============\n* iOS 6.0 or later\n* Xcode 8.0 or later\n\n集成\n==============\n* 使用CocoaPods:\n  -  pod 'WHC_Model'\n* 手工集成:\n  -  导入文件夹WHC_ModelKit\n\n用法\n==============\n\n### json -\u003e model\n```Objective-C\n/// jsonString 是一个比较复杂3000行的json文件，具体参考demo\n    ModelObject * model = [ModelObject whc_ModelWithJson:jsonString];\n    NSLog(@\"model = %@\\n\\n\\n\",model);\n```\n\n### model -\u003e json\n```Objective-C\n    NSString * modelString = [model whc_Json];\n    NSLog(@\"modelString = %@\\n\\n\\n\",modelString);\n```\n\n### model - \u003e NSDictionary\n```Objective-C\n    NSDictionary * modelDict = [model whc_Dictionary];\n    NSLog(@\"modelDict = %@\\n\\n\\n\",modelDict);\n```\n\n### 四,指定路径只解析Head对象\n```Objective-C\n    Head * head = [Head whc_ModelWithJson:jsonString keyPath:@\"Head\"];\n    NSLog(@\"head = %@\\n\\n\\n\",head);\n```\n\n### 五,指定路径只解析ResponseBody对象\n```Objective-C\n    ResponseBody * body = [ResponseBody whc_ModelWithJson:jsonString keyPath:@\"ResponseBody\"];\n    NSLog(@\"ResponseBody = %@\\n\\n\\n\",body);\n```\n\n### 六,指定路径只解析PolicyRuleList集合中第一个对象\n```Objective-C\n    PolicyRuleList * rule = [PolicyRuleList whc_ModelWithJson:jsonString keyPath:@\"ResponseBody.PolicyRuleList[0]\"];\n    NSLog(@\"rule = %@\\n\\n\\n\",rule);\n```\n###七,归档对象\n```Objective-C\n    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:body];\n    NSLog(@\"data = %@\\n\\n\\n\",data);\n```\n\n### 八,解归档对象\n```Objective-C\n    ResponseBody * body = [NSKeyedUnarchiver unarchiveObjectWithData:data];\n    NSLog(@\"body = %@\\n\\n\\n\",body);\n```\n### 九,模型对象复制\n```Objective-C\n    ResponseBody * copyBody = body.copy;\n    NSLog(@\"copyBody = %@\",copyBody);\n```\n自定义别名\n==============\n```Objective-C\n/// 模型类可自定义属性名称\n+ (NSDictionary \u003cNSString *, NSString *\u003e *)whc_ModelReplacePropertyMapper {\n    return @{\u003cjson key名: 替换实际属性名\u003e};\n}\n/// 模型数组/字典元素对象可自定义类\n+ (NSDictionary \u003cNSString *, Class\u003e *)whc_ModelReplaceContainerElementClassMapper {\n    return @{替换实际属性名 : 实际类};\n}\n/// 模型类可自定义属性类型\n+ (NSDictionary \u003cNSString *, Class\u003e *)whc_ModelReplacePropertyClassMapper {\n    return @{替换实际属性名 : 实际类};\n}\n```\n\n推荐\n==============\n- WHC_DataModelFactory mac工具github地址：https://github.com/netyouli/WHC_DataModelFactory\n\n文档\n==============\n```Objective-C\n\n#pragma mark - json转模型对象 Api -\n\n/** 说明:把json解析为模型对象\n *@param json :json数据对象\n *@return 模型对象\n */\n+ (id)whc_ModelWithJson:(id)json;\n\n/** 说明:把json解析为模型对象\n *@param json :json数据对象\n *@param keyPath :json key的路径\n *@return 模型对象\n */\n\n+ (id)whc_ModelWithJson:(id)json keyPath:(NSString *)keyPath;\n\n\n#pragma mark - 模型对象转json Api -\n\n/** 说明:把模型对象转换为字典\n *@return 字典对象\n */\n\n- (NSDictionary *)whc_Dictionary;\n\n/** 说明:把模型对象转换为json字符串\n *@return json字符串\n */\n\n- (NSString *)whc_Json;\n\n#pragma mark - 模型对象序列化 Api -\n\n/// 复制模型对象\n- (id)whc_Copy;\n\n/// 序列化模型对象\n- (void)whc_Encode:(NSCoder *)aCoder;\n\n/// 反序列化模型对象\n- (void)whc_Decode:(NSCoder *)aDecoder;\n```\n## \u003ca id=\"期待\"\u003e\u003c/a\u003e期待\n\n- 如果您在使用过程中有任何问题，欢迎issue me! 很乐意为您解答任何相关问题!\n- 与其给我点star，不如向我狠狠地抛来一个BUG！\n- 如果您想要更多的接口来自定义或者建议/意见，欢迎issue me！我会根据大家的需求提供更多的接口！\n\n## Licenses\nAll source code is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetyouli%2FWHC_Model","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetyouli%2FWHC_Model","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetyouli%2FWHC_Model/lists"}