开发笔记3-JSON数据的创建与读取
来源:互联网 发布:淘宝代购only哪家靠谱 编辑:程序博客网 时间:2024/05/17 22:03
有了从网络获取数据的能力,今天就是练习一下网络传送的常见数据格式-JSON,当然XML是主流,但我自己比较喜欢JSON,而且大致看了一下XML的解析,objcec-c有专门的类做此工作,也就看看理论就罢了。今天的代码只练习JSON,今天的参考代码仍然是《iOS 5 Programming CookBook》作者Vandad Nahavandipoor。
预计结果如下:
上面有个小知识点:在强制转换前可以判断对象是属于那个类的,这一点真很有用,我记得之前有个网页的Object-c教程,就利用这一点将面向对象的多态特点应用到程序中,恩,我还得学习,今天比较简单就到这,明天搞定音频和视频框架的使用,准备准备简历,明天去人才市场看看去~~
首先复习下JSON的格式:整个数据是包装在{和}之间,内容是键:值对,键值对之间用“,”隔开,值也可以是数组,包装在[]之间,数据之间也是用“,”隔开,我曾经再学ExtJs的时候学习了下JSON,JSON还能组成比较复杂的数据结构,但不是今天关心的,今天主要是标准的JSON格式数据的封装与解析。
先来封装,一说键值对,在object-c语言中绝对是首先联想到NSDictionary类,如果是JAVA的话我想到的是Map,嘿嘿,好久没碰JAVA了,居然还是我大学的主修呢~~JSON数据之所以比XML好封装就是应为NSData类直接有方法将NSDictionary实例转换成JSON对象,前提是,特别重要,数据字典中的值必须是NSString实例或NSArray实例或NSNumber实例,NSArray我想就是对应JSON可以存储的数组对象,我想里面也必须是NSString和NSNumber实例吧~
贴封装代码:(内容我小改了一下)
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; [dictionary setValue:@"Beleege" forKey:@"first name"]; [dictionary setValue:@"Zhang" forKey:@"last name"]; [dictionary setValue:[NSNumber numberWithUnsignedInt:23] forKey:@"age"]; NSArray *array = [[NSArray alloc] initWithObjects:@"Wang Meng", @"Bai Mo", @"PP",nil]; [dictionary setValue:array forKey:@"firends"]; NSError *err = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&err]; if (jsonData.length > 0 && err == nil) { NSLog(@"Success seralized dictionary into data."); NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"json string = %@", jsonString); } else if (jsonData.length == 0 && err == nil) { NSLog(@"NO data returned after serialized"); } else if (err != nil) { NSLog(@"An err happened = %@", err); }
预计结果如下:
Success seralized dictionary into data. json string = { "age" : 23, "last name" : "Zhang", "firends" : [ "Wang Meng", "Bai Mo", "PP" ], "first name" : "Beleege"}
再贴解析代码:
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&err]; if (jsonObject != nil && err == nil) { NSLog(@"Successfully deseriazed..."); if ([jsonObject isKindOfClass:[NSDictionary class]]) { NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject; NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary); } else if ([jsonObject isKindOfClass:[NSArray class]]) { NSArray *deserializedArray = (NSArray *)jsonObject; NSLog(@"Deserialized JSON Array = %@", deserializedArray); } } else if(err != nil) { NSLog(@"An err happened while deserializing JSON Data."); }
上面有个小知识点:在强制转换前可以判断对象是属于那个类的,这一点真很有用,我记得之前有个网页的Object-c教程,就利用这一点将面向对象的多态特点应用到程序中,恩,我还得学习,今天比较简单就到这,明天搞定音频和视频框架的使用,准备准备简历,明天去人才市场看看去~~
- 开发笔记3-JSON数据的创建与读取
- Android---读取与创建JSON格式的数据
- Android中Json数据读取与创建的方法
- json 读取数据创建表格
- 读取、创建Json格式数据
- JSON的创建和读取
- 使用Java读取、创建JSON数据
- 创建并读取JSON格式数据
- json学习笔记_02_java创建json数据
- Asp.net中Json数据的转化,读取与应用
- Asp.net中Json数据的转化,读取与应用
- APP接口开发之PHP封装JSON数据 ,并读取JSON数据的方法
- XML数据读取与创建
- IOS开发笔记(4)数据离线缓存与读取
- java31.JSON操作------使用Java读取、创建JSON数据
- 在Android中操作JSON数据-读取JSON格式数据/创建JSON格式数据
- iOS中plist的创建,数据写入与读取
- Ajax中JSON数据的创建与获取【JQuery】
- Java传值调用
- ubuntu _vbox pci device drivers
- eclipse搭建SSH全面了解
- STL-求数组中的最大值,最小值
- 淡定人生,享受平静
- 开发笔记3-JSON数据的创建与读取
- android之垃圾短信拦截功能实现
- 子函数内申请的空间传回主函数
- MyEclipse 8.5 插件安装 以安装CDT插件为例
- 第7周上机任务
- POJ 3694
- android源码框架
- 流年,经不起怀念
- css 小知识 集锦