在iOS  5 中,苹果引入了一个解析JSON串的NSJSONSerialization类。
通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化。
 
以前,我记得我用的是第三方的插件。但是,苹果出了这套解析后,效率也大大了超过了,所有的解析第三方类库。所以,推荐使用NSJSONSerialization类来完成转化。
 
一、将NSDictionary或NSArray转化为JSON串
 

// 将字典或者数组转化为JSON串

- (NSData *)toJSONData:(id)theData{

NSError *error = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData

options:NSJSONWritingPrettyPrinted

error:&error];

if ([jsonData length] > 0 && error == nil){

return jsonData;

}else{

return nil;

}

}

 
使用这个方法的返回,我们就可以得到想要的JSON串

NSString *jsonString = [[NSString alloc] initWithData:jsonData

encoding:NSUTF8StringEncoding];

 
 
二、将JSON串转化为NSDictionary或NSArray
 
将NSString转化为NSData

[jsonString dataUsingEncoding:NSASCIIStringEncoding];

 

//
将JSON串转化为字典或者数组

-
(id)toArrayOrNSDictionary:(NSData *)jsonData{

NSError *error = nil;

id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData

options:NSJSONReadingAllowFragments

error:&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;

}

@end

 
 
2.将NSArray或者NSDictionary转化为NSString
 

#import
"NSObject+JSONCategories.h"

@implementation NSObject
(JSONCategories)

-(NSData*)JSONString;

{

NSError* error = nil;

id
result = [NSJSONSerialization
dataWithJSONObject:self

options:kNilOptions error:&error];

if (error != nil) return nil;

return result;

}

@end

 

希望对你有所帮助!

NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化的更多相关文章

  1. json、xml和java对象之间的转化

    其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...

  2. python字典、字符串(json串)、字节串之间的转化

    字典和json字符串(本质也是字符串)之间的转化用json.dumps和json.loads() json.dumps():   字典→json字符串 json.loads():     json字符 ...

  3. NSDictionary或NSArray与JSON字符串相互转换

    在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类.通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. 以前,我记得我用的是 ...

  4. iOS学习—JSON数据解析

      关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...

  5. iOS学习——JSON数据解析(十一)

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  6. iOS学习笔记(十一)——JSON数据解析

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  7. 将字典或者数组转换成JSON数据或者字符串

    将字典或者数组转换成JSON数据或者字符串 源码: NSDictionary+JSON.h 与 NSDictionary+JSON.m // // NSDictionary+JSON.h // Cat ...

  8. iOS多线程与网络开发之解析json数据

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. // 同步发送信息 2 NSData *data = [NSURLConnection sendSynchronousRequest:request r ...

  9. Swift - 解析JSON数据(内置NSJSONSerialization与第三方JSONKit)

    一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也比其 ...

随机推荐

  1. Java开发手册

    <Java开发手册> 基本信息 作者: 桂颖    谷涛    出版社:电子工业出版社 ISBN:9787121209161 上架时间:2013-8-12 出版日期:2013 年7月 开本 ...

  2. Linux学习笔记5——虚拟内存

    一.为什么要有虚拟内存 虚拟内存的提出,是为了禁止用户直接访问物理存储设备,有助于系统稳定. 二.为什么一个程序不能访问另外一个程序的地址指向的空间 1:每个程序的开始地址0x80084000 2:程 ...

  3. bzoj 1013 [JSOI2008]球形空间产生器sphere(高斯消元)

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3584  Solved: 1863[Subm ...

  4. Centos 6.4 openNebula4

    我们实验室的 OpenNebula 3.2 已经很稳定的运行了两年,除了开头一个月不熟悉这套云计算软件有点乱.容易犯错外接下来的时间里都很稳定,期间还包括一次防火演习(突然拉闸似断电)和安全检查(计划 ...

  5. The breakpoint will not currently be hit. vs2005断点不被命中

    用会了vs2005但是发现坑爹的连断点都不会命中,原来是默认设置的问题.要使断点命中: 1. 首先确保程序是在DEBUG模式下运行: 2. 确认正确的项目设置:链接器->调试->生成调试信 ...

  6. MyEclipe10中集成Tomcat7

    1.MyEclipse|Servers|Tomcat|Tomcat 7.x 2.Enable 3.Browse:D:\Tomcat 7.0 4.JDK:下拉选择JDK7.0,注意:千万不能在此处右键A ...

  7. Sublime Text 2/3如何支持中文GBK编码

    Sublime Text默认是只支持UTF8的编码,所以有些时候,当我们打开GBK文件时候,文件内会出先部分的乱码, 在菜单栏选择"Preferences"-->" ...

  8. PDOstament对象执行execute()函数,只要是sql语句正确都是返回true

    [PDO对象操作数据库] PDOstament对象执行execute()函数,只要是sql语句正确都是返回true. 问题: 想要PDO对象实现更改一条记录, 并修改是否成功要返回信息给用户. 上我的 ...

  9. Secant Method (Website)

    Secant Method:  https://www.youtube.com/watch?v=qC9xnsfOd30 Secant Method : http://mathworld.wolfram ...

  10. 利用ssh传输文件 分类: 服务器搭建 Raspberry Pi 2015-04-12 18:47 58人阅读 评论(0) 收藏

    在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本 ...