iOS中使用KVC实现JSON数据与Objective-C实体对象之间的转换
来源:互联网 发布:小葫芦数据检测作假 编辑:程序博客网 时间:2024/04/26 19:31
JSON数据,一种极其常用的数据传输格式,在iOS开发当中,经常会遇到需要将JSON格式数据转换为定义的实体,如将一大串联络人的json数据转换为Contact对象的数组等,想必大家都知道有一种最常见的方式,如下:
以上是核心代码,当然你需要引入
- 首先将JSON解析成字典(NSDictionary)或数组(NSArray);
- 然后使用objectForKey分别对Contact对象的属性进行赋值。
以上方式,存在的问题:
1、大量的objectForKey,导致代码量大,增加维护成本;
2、如果JSON中增加一个字段,对应在实体对象当中,增加一个属性,同时还需要在json解析的地方进行赋值。
如果在开发中使用KVC,来实现JSON数据与实体对象之间的转换,能够很好的解决以上方式存在的问题,不说了,直接贴代码,有兴趣的可以在日常的开发当中尝试一下。
- (void)serialization:(NSString*)json{ NSDictionary *dataSource = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableLeaves error:nil]; [self convert:dataSource];}- (void)serializationWithDictionary:(NSMutableDictionary*)dictionary{ [self convert:dictionary];}- (void)convert:(NSDictionary*)dataSource{ for (NSString *key in [dataSource allKeys]) { if ([[self propertyKeys] containsObject:key]) { id propertyValue = [dataSource valueForKey:key]; if (![propertyValue isKindOfClass:[NSNull class]] && propertyValue != nil) { [self setValue:propertyValue forKey:key]; } } }}- (NSArray*)propertyKeys{ unsigned int outCount, i; objc_property_t *properties = class_copyPropertyList([self class], &outCount); NSMutableArray *propertys = [NSMutableArray arrayWithCapacity:outCount]; for (i = 0; i<outCount; i++) { objc_property_t property = properties[i]; const char* char_f =property_getName(property); NSString *propertyName = [NSString stringWithUTF8String:char_f]; [propertys addObject:propertyName]; } free(properties); return propertys;}
以上是核心代码,当然你需要引入
<objc/runtime.h>
然后创建一个NSObject的Category,将以上代码加入就OK了,超级简单。
0 0
- iOS中使用KVC实现JSON数据与Objective-C实体对象之间的转换
- iOS中使用KVC实现JSON数据与Objective-C实体对象之间的转换
- iOS-OC中使用KVC转换JSON数据(笔记)
- iOS平台基于KVC的JSON与数据对象绑定
- json数据与实体类之间的相互转换
- Objective c ,iOS KVC是如何实现的,权威答案
- iOS中Objective-C与JavaScript之间相互调用的实现
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
- Objective-C中ORM的运用:实体对象和字典的相互自动转换
- Objective-C中ORM的运用:实体对象和字典的相互自动转换
- Java中json 字符串与对象之间的转换
- JS中json 字符串与对象之间的转换
- js中js数组、对象与json之间的转换
- js中js数组、对象与json之间的转换
- Java中Json字符串与对象之间的相互转换
- 使用Jackson做对象与json之间的相互转换
- Objective-C plist文件与KVC 的使用
- 实现实体类和json类之间的相互转换
- linux下安装nginx常见错误
- cocoapods安装步骤及常见问题
- session总结
- JavaScript Date 格式化 以及 本周本月的获取
- Vitamio打造万能播放器使用步骤
- iOS中使用KVC实现JSON数据与Objective-C实体对象之间的转换
- linux下安装php常见错误
- 根据Linux 线程挂起与唤醒原理,实现Sleep的暂停与继续
- Android从入门到精通标配四阶段
- ZigBee和6LoWPAN在物联网中应用对比
- hello
- css transition动画效果案例
- 一个诡异的问题:Mac上Charles只能抓浏览器,抓app包失败的问题
- 华为USG负载分担及热备配置