NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化
2015-09-16 02:12
776 查看
在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类。通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化。以前,我记得我用的是第三方的插件。但是,苹果出了这套解析后,效率也大大了超过了,所有的解析第三方类库。所以,推荐使用NSJSONSerialization类来完成转化。一、将NSDictionary或NSArray转化为JSON串// 将字典或者数组转化为JSON串- (NSData *)toJSONData:(id)theData{NSError *error = nil;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theDataoptions:NSJSONWritingPrettyPrintederror:&error];if ([jsonData length] > 0 &&
error == nil){return jsonData;}else{return nil;}}使用这个方法的返回,我们就可以得到想要的JSON串NSString *jsonString = [[NSString alloc] initWithData:jsonDataencoding:NSUTF8StringEncoding];二、将JSON串转化为NSDictionary或NSArray将NSString转化为NSData[jsonString dataUsingEncoding:NSASCIIStringEncoding];// 将JSON串转化为字典或者数组- (id)toArrayOrNSDictionary:(NSData *)jsonData{NSError *error = nil;id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonDataoptions:NSJSONReadingAllowFragmentserror:&error];if (jsonObject != nil && error == nil){return jsonObject;}else{// 解析错误return nil;}}三、将JSON串与NSArray和NSDictionary的操作进行封装当然,也有很多时候,我们将这些操作,分别定义在NSObject和NSString的一个分类中直接贴:1.将NSString转化为NSArray或者NSDictionary#import "NSString+JSONCategories.h"@implementation NSString(JSONCategories)-(id)JSONValue;{NSData*
data = [self dataUsingEncoding:NSUTF8StringEncoding];__autoreleasing NSError*
error = nil;id result
= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions
error:&error];if (error != nil) return nil;return result;}@end2.将NSArray或者NSDictionary转化为NSString#import "NSObject+JSONCategories.h"@implementation NSObject (JSONCategories)-(NSData*)JSONString;{NSError* error = nil;id result
= [NSJSONSerialization dataWithJSONObject:selfoptions:kNilOptionserror:&error];if (error != nil) return nil;return result;}@end顺便提加一下 这个JSON格式就是1、对象是一个无序的“‘名称/值’对”集合。
(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。(2)每个“名称”后跟一个“:”(冒号);(3)“‘名称/值’ 对”之间使用“,”(逗号)分隔。(如图所示,图中表示数据的方式是类似非确定性自动机的形式,没学过编译原理的人,可能理解起来困难点,实际上也是正则表达式的形式。下同)例子:表示人的一个对象:相关文章推荐
- 关于JavaScript中的事件代理
- Ember.js 入门指南——handlebars显示对象的键(未完待续)
- Ember.js 入门指南——handlebars遍历标签
- Ember.js 入门指南——handlebars遍历标签
- JSP中的九个内置对象及四个作用域
- 浅谈jsp的Session的生命周期
- javascript模拟实现Map
- 使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
- JS+CSS实现的经典tab选项卡效果代码
- Javascript实现商品秒杀倒计时(时间与服务器时间同步)
- javascript中的previousSibling和nextSibling的正确用法
- JS实现光滑展开合拢的菜单效果代码
- JS实现自动固定顶部的悬浮菜单栏效果
- js实现tab切换效果实例
- jsp表单提交中文乱码问题
- 《JavaScript Dom编程艺术》---总结(一)JavaScript语法
- Ember.js 入门指南——handlebars遍历标签
- Ember.js 入门指南——handlebars显示对象的键(未完待续)
- Ember.js 入门指南——handlebars属性绑定
- dwr util.js 和engine.js在script中的路径问题