什么时候需要用到ios json格式的字符串串 iOS

您所在的位置: &
iOS网络交互数据格式解析之json
iOS网络交互数据格式解析之json
作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。从ios5开始,apple提供了对json的原生支持,但为了兼容以前的ios版本,我们仍然需要使用第三方库来解析常用的ios json库有json-framework、JSONKit、TouchJSON等。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,目前在网络交互过程中有着举足轻重的地位如果您对json还有什么不清楚的话建议去看。
& 在iOS平台上,Apple 从 iOS 5.0
才开始提供原生的json生成和解析的API,使用起来 非常方便,但这样就无法为iOS 5.0 之前版本的用户服务了。对于iOS
5.0以前的系统,json的使用得益于无数无私的开源拥护者的贡献。估计大多数开发者现在还不会直接抛弃仍在使用 5.0
以前版本的用户,所以这里优先介绍3种主要的开源库的使用,然后再介绍新的原生API的使用。
& 测试数据我们使用国家气象局提供的天气预报接口:
您可以用浏览器打开,看看这三个地址到底是什么--其实你可以分别看到3个字符串,没错,你才对了,这就是我们测试用的 json 数据。
& 我们打开 github 搜索关键字 json ,程序语言选择 Objective-C ;可以得到 n 页结果。我们就依次介绍最前面的3个:stig/json-framework、TouchCode/TouchJSON、johnezang/JSONKit。紧接着介绍 iOS 5.0 开始提供的原生 JSON 处理类。
此处我们将这三个开源库及原生JSON处理类放到一个工程里介绍了,但开源库 stig/json-framework
编译是需要ARC支持的,而TouchCode/TouchJSON 和 johnezang/JSONKit 是不需要 ARC
支持。这样我么在工程中就需要打开 ARC (可以在创建工程的时候就选中 ARC,也可和下图一样在build setting 中设置两处 为
然后对后两者在编译规则中做简单的处理,-fno-objc-arc即是规定该文件编译时不需要ARC支持,如下图:
因为我们测试的数据来自于互联网,所以我们需要网络支持,这里我们需要添加系统库:CFNetwork.framework,如下图
终于开始写代码了,公用代码:
1.将url地址定义成字符串常量
2.import 相应文件;
3.连接到测试的url;
4.取得json数据,并将其以字符串的形式显示在第一个 TextView 上;
5.将解析后的JSON实际内容显示在第二个 TextView 上
&#define&jsonSourceURLAddress_1&@&.cn/data/.html&&#define&jsonSourceURLAddress_2&@&.cn/data/sk/.html&&#define&jsonSourceURLAddress_3&@&.cn/data/cityinfo/.html
#import&&LTRootViewController.h&&&#import&&SBJson.h&&#import&&TouchJSON/JSON/CJSONDeserializer.h&&#import&&JSONKit/JSONKit.h&
-&(void)viewDidLoad&{&&&&&[super&viewDidLoad];&&&&&&&&&&&&&&&NSURL&*url&=&[NSURL&URLWithString:jsonSourceURLAddress_1];&&&&&NSURLRequest&&&&*urlRequest&=&[NSURLRequest&requestWithURL:url&cachePolicy:NSURLRequestReturnCacheDataElseLoad&timeoutInterval:30];&&&&&NSURLConnection&*urlConnection&=&[NSURLConnection&connectionWithRequest:urlRequest&delegate:self];&&&&&[urlConnection&start];&}&
#pragma&mark&-&NSURLConnectionDataDelegate&methods&-&(void)connection:(NSURLConnection&*)connection&didFailWithError:(NSError&*)error&{&&&&&UIAlertView&*&alertV&=&[[UIAlertView&alloc]&initWithTitle:@&网络连接失败&&message:[NSString&&stringWithFormat:@&%@&,error]&delegate:self&cancelButtonTitle:nil&otherButtonTitles:nil,&nil];&&&&&[alertV&show];&}&-&(void)connection:(NSURLConnection&*)connection&didReceiveData:(NSData&*)data&{&&&&&&&&&&self.m_JsonData&=&&&&&&self.m_sourceJsonTV.text&=&[[NSString&alloc]&initWithData:data&encoding:NSUTF8StringEncoding];&}&
-&(void)displayWithParsedDic:(NSDictionary&*)rootDic&{&&&&&&&&&&&&&&&if&(!rootDic)&{&&&&&&&&&self.m_parsedJsonTV.text&=&@&cleaned...&;&&&&&}else{&&&&&&&&NSDictionary&*weatherInfo&=&[rootDic&objectForKey:@&weatherinfo&];&&&&&&&&&&&&&&&&&&self.m_parsedJsonTV.text&=&[NSString&stringWithFormat:@&今天是&%@&&%@&&%@&&的天气状况是:%@&&%@&&,[weatherInfo&objectForKey:@&date_y&],[weatherInfo&objectForKey:@&week&],[weatherInfo&objectForKey:@&city&],&[weatherInfo&objectForKey:@&weather1&],&[weatherInfo&objectForKey:@&temp1&]];&&&&&}&}&
现在分类的介绍这4种JSON解析方式:
1、json-framework
& 也有人管这库叫SBJson我们从 这个库并将其导入到我们的工程中(仅需将下载下来的文件夹中,classes 目录下的所有文件复制导入到我们的工程就行)。在任何你需要使用json处 :#import &SBJson.h&&
-&(IBAction)sbjsonAction:(id)sender&{&&&&&&&&&&SBJsonParser&*&parser&=&[[SBJsonParser&alloc]&init];&&&&&NSString&*&jsonStr&=&[[NSString&alloc]&initWithData:self.m_JsonData&encoding:NSUTF8StringEncoding];&&&&&NSDictionary&*rootDic&=&[parser&objectWithString:jsonStr];&&&&&[self&displayWithParsedDic:rootDic];&}&
2、TouchJSON
& 我纠结了很久,要不要介绍这个库了,因为作者在github上声称:&But you should NOT be using this code in your new projects&。
这个库并将其导入到我们的工程中(仅需将下载下来的文件夹中,Source 目录下的所有文件复制导入到我们的工程)。但是 Source/Experimental目录下提供的功能慎用(&Be
aware that the code in the Experimental subdirectory of Source is just
that and may not have been extensively tested and/or have extra
dependencies)。在任何你需要使用json处:#import &CJSONDeserializer.h&
-&(IBAction)touchJsonAction:(id)sender&{&&&&&&&&&&NSError&*&error&=&&&&&&NSDictionary&*rootDic&=&[[CJSONDeserializer&deserializer]&deserialize:self.m_JsonData&error:&error];&&&&&[self&displayWithParsedDic:rootDic];&}&
3、JSONKit
这个库并将其导入到我们的工程中(这个很简单,代码文件只有2个,都复制导入我们的工程吧)。
-&(IBAction)jsonkitAction:(id)sender&{&&&&&&&&&&NSDictionary&*&rootDic&=&[self.m_JsonData&objectFromJSONDataWithParseOptions:JKParseOptionLooseUnicode];&&&&&[self&displayWithParsedDic:rootDic];&}&
4、原生JSON处理类
& 使用原生的JSON处理类解析就相当方便了,据说也是最快的(未亲测速度):
-&(IBAction)nsjsonAction:(id)sender&{&&&&&&&&&&NSError&*error&=&&&&&&NSDictionary&*&rootDic&=&[NSJSONSerialization&JSONObjectWithData:self.m_JsonData&options:NSJSONReadingMutableLeaves&error:&error];&&&&&[self&displayWithParsedDic:rootDic];&}&
小结:这里只是介绍了最简单的通过网络得到JSON并解析之的方法。在实际应用中我们可能还要主意在解析时,根据实际传输的数据需要设置的&option 类型。由于本人的水平有限,如果有错我还请各位拍砖,并点出来我一定第一时间更正。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&&&的更多文章
Android 4.4即将发布,这对大家来说都是很期待的,当然,无论是
免费下载+应用内购买(In-App Purchase)已成为移动应用
现在天气渐凉,秋意越来越浓厚了,上周,公司全体组织
当下移动互联网的发展势头迅猛,各式各样的App也在横
精选目前国内外最流行的程序设计语言――Java作为本书的选题,并以丰富的内容来解决读者学习该语言时可能遇到的各种问题。以专业
Windows Phone专家
Android开发专家
51CTO旗下网站iOS:json格式字符串转字典,字典转json格式字符串 - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了2868字,被64人关注,获得了68个喜欢
iOS:json格式字符串转字典,字典转json格式字符串
/*!* @brief 把格式化的JSON格式的字符串转换成字典* @param jsonString JSON格式的字符串* @return 返回字典*/json格式字符串转字典:+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {if (jsonString == nil) {}NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];NSError *NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonDataoptions:NSJSONReadingMutableContainerserror:&err];if(err) {NSLog(@"json解析失败:%@",err);}}字典转json格式字符串:+ (NSString*)dictionaryToJson:(NSDictionary *)dic{NSError *parseError =NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];}NSJSONWritingPrettyPrinted
是有换位符的。如果NSJSONWritingPrettyPrinted 是nil 的话 返回的数据是没有 换位符的
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
【最新投稿方式】
为了保证专题文章的质量,暂时关闭投稿申请,改为【私信文章链接】给本专题的管理员 (花前月下) (判若...
· 8046人关注
提供高质量的iOS技术性文章,供大家学习
· 169人关注
IONIC 是目前最有潜力的一款 HTML5 手机应用开发框架。通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发...
· 84人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:iOS:JSON格式字符串转字典,字典转JSON格式字符串_iOS开发_
iOS:JSON格式字符串转字典,字典转JSON格式字符串
来源:人气:400
在iOS开发中,和服务器交互中,经常用到字典和JSON格式字符串相互转换。
代码如下:
1、JSON格式字符串转字典
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
NSLog(@"JSON解析失败:%@",err);
2、字典转JSON格式字符串
+ (NSString*)dictionaryToJson:(NSDictionary *)dic
NSError *parseError =
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingettyPrinted error:&parseError];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
优质网站模板查看: 2604|回复: 2
IOS 把格式化的JSON字符串转换成字典
大虾, 积分 158, 距离下一级还需 42 积分
大虾, 积分 158, 距离下一级还需 42 积分
注册时间12-5
在线时间12 小时
技术方向其他
当前用户组为 大虾当前积分为 158, 升到下一级还需要 42 点。
主题帖子积分
大虾, 积分 158, 距离下一级还需 42 积分
大虾, 积分 158, 距离下一级还需 42 积分
发表于 1-21 10:22:55
* @brief 把格式化的JSON格式的字符串转换成字典&&
* @param jsonString JSON格式的字符串&&
* @return 返回字典&&
*/&&
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {&&
& & if (jsonString == nil) {&&
& && &&&&&
& & }&&
& && &
& & NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];&&
& & NSError *&&
& & NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData&&
& && && && && && && && && && && && && && && && && && &&&options:NSJSONReadingMutableContainers&&
& && && && && && && && && && && && && && && && && && && & error:&err];&&
& & if(err) {&&
& && &&&NSLog(@&json解析失败:%@&,err);&&
& && &&&&&
& & }&&
& &&&
}&&复制代码
帖子地址:&分享给好友
大虾, 积分 154, 距离下一级还需 46 积分
大虾, 积分 154, 距离下一级还需 46 积分
注册时间8-20
在线时间10 小时
当前用户组为 大虾当前积分为 154, 升到下一级还需要 46 点。
主题帖子积分
大虾, 积分 154, 距离下一级还需 46 积分
大虾, 积分 154, 距离下一级还需 46 积分
发表于 1-21 17:57:56
中国移动互联网研发培训领导品牌,专注iOS、Android移动互联网研发培训,坚持“用良心做教育”的理念。
大虾, 积分 120, 距离下一级还需 80 积分
大虾, 积分 120, 距离下一级还需 80 积分
注册时间8-21
在线时间6 小时
当前用户组为 大虾当前积分为 120, 升到下一级还需要 80 点。
主题帖子积分
大虾, 积分 120, 距离下一级还需 80 积分
大虾, 积分 120, 距离下一级还需 80 积分
发表于 1-22 14:33:14
GMT+8, 12-30 10:43
Powered by}

我要回帖

更多关于 ios 字符串转json格式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信