JSON序列化为实体对象
2015-06-29 10:05
543 查看
1、JSON 文本,文件名 applications.json
2、新建 Entity 对象类
3、读取并序列化 JSON ,把读取的信息,封装到 Entity 对象中
4、调用序列化方法
[ { "display_name": "500px", "developer_name": "500px", "identifier": "471965292" }, { "display_name": "Airbnb", "developer_name": "Airbnb, Inc.", "identifier": "401626263" }, { "display_name": "AppStore", "developer_name": "Apple, Inc.", "identifier": "" }, { "display_name": "Camera", "developer_name": "Apple, Inc.", "identifier": "" }, { "display_name": "Dropbox", "developer_name": "Dropbox, Inc.", "identifier": "327630330" }, { "display_name": "Facebook", "developer_name": "Facebook, Inc.", "identifier": "284882215" }, { "display_name": "WWDC", "developer_name": "Apple, Inc.", "identifier": "640199958" }, ]
2、新建 Entity 对象类
#import <Foundation/Foundation.h> //JSON 文件中去掉了一些类型 typedef NS_ENUM(NSUInteger, ApplicationType) { ApplicationType500px, ApplicationTypeAirbnb, ApplicationTypeAppstore, ApplicationTypeCamera, ApplicationTypeDropbox, ApplicationTypeFacebook, ApplicationTypeFancy, ApplicationTypeFoursquare, ApplicationTypeiCloud, ApplicationTypeInstagram, ApplicationTypeiTunesConnect, ApplicationTypeKickstarter, ApplicationTypePath, ApplicationTypePinterest, ApplicationTypePhotos, ApplicationTypePodcasts, ApplicationTypeRemote, ApplicationTypeSafari, ApplicationTypeSkype, ApplicationTypeSlack, ApplicationTypeTumblr, ApplicationTypeTwitter, ApplicationTypeVideos, ApplicationTypeVesper, ApplicationTypeVine, ApplicationTypeWhatsapp, ApplicationTypeWWDC }; @interface Application : NSObject @property (nonatomic, strong) NSString *displayName; @property (nonatomic, strong) NSString *developerName; @property (nonatomic, strong) NSString *identifier; @property (nonatomic, strong) NSString *iconName; @property (nonatomic) ApplicationType type; - (instancetype)initWithDictionary:(NSDictionary *)dict; @end
#import "Application.h" @implementation Application - (instancetype)initWithDictionary:(NSDictionary *)dict { if (!dict) { return nil; } self = [super init]; if (self) { self.displayName = [dict objectForKey:@"display_name"]; self.developerName = [dict objectForKey:@"developer_name"]; self.identifier = [dict objectForKey:@"identifier"]; } return self; } - (void)setDisplayName:(NSString *)displayName { _displayName = displayName; self.iconName = [[[NSString stringWithFormat:@"icon_%@", self.displayName] lowercaseString] stringByReplacingOccurrencesOfString:@" " withString:@"_"]; self.type = applicationTypeFromString(self.displayName); } ApplicationType applicationTypeFromString(NSString *string) { //JSON 文件中去掉了一些类型 NSArray *arr = @[ @"500px", @"Airbnb", @"AppStore", @"Camera", @"Dropbox", @"Facebook", @"Fancy", @"Foursquare", @"iCloud", @"Instagram", @"iTunes Connect", @"Kickstarter", @"Path", @"Pinterest", @"Photos", @"Podcasts", @"Remote", @"Safari", @"Skype", @"Slack", @"Tumblr", @"Twitter", @"Videos", @"Vesper", @"Vine", @"WhatsApp", @"WWDC" ]; return (ApplicationType)[arr indexOfObject:string]; } @end
3、读取并序列化 JSON ,把读取的信息,封装到 Entity 对象中
#pragma mark - Serialization //序列化数据 - (void)serializeApplications { NSString *path = [[NSBundle mainBundle] pathForResource:@"applications" ofType:@"json"]; NSData *data = [NSData dataWithContentsOfFile:path]; NSArray *objects = [[NSJSONSerialization JSONObjectWithData:data options:kNilOptions|NSJSONWritingPrettyPrinted error:nil] mutableCopy]; self.applications = [NSMutableArray new]; for (NSDictionary *dictionary in objects) { Application *app = [[Application alloc] initWithDictionary:dictionary]; [self.applications addObject:app]; } }
4、调用序列化方法
@interface MainViewController () //保存 JSON 数据的 数组 @property (nonatomic, strong) NSMutableArray *applications; @end @implementation MainViewController - (void)awakeFromNib { [super awakeFromNib]; //序列化数据 [self serializeApplications]; }
相关文章推荐
- 100多个基础常用JS函数和语法集合大全
- 遍历对象所有属性(json对象)
- JavaScript的内置对象和函数
- jsp 指令元素、脚本元素、动作元素的区别
- 多浏览器兼容性问题及解决方案之Javascript篇
- js报错 版本问题
- EF 实体+ Newtonsoft.Json 输出JSON 时动态忽略属性的解决方法
- JavaScript实现无刷新评论及在IE下的剪切板访问(学习)
- Newtonsoft.Json高级用法
- Newtonsoft.Json高级用法
- 基于ExtJs的桌面系统(4)
- 模块化开发--sea.js
- JavaScript中的getBoundingClientRect()方法
- JS解析XML通用版
- javascript参数的理解
- Javascript定时器学习笔记
- JavaScript写一个小乌龟推箱子游戏
- 收藏:Javascript 脚本的调试经验
- PHP变量赋值、代入给JavaScript中的变量
- JavaScript实现把数字转换成中文