JSON
2015-07-17 12:03
661 查看
-(void)logout
{
NSURL *url = [NSURLURLWithString:@"http://192.168.1.152/apple_ios/index.php?g=mobile&m=activity&a=get_near_new_activity"];
//第二步,创建请求
NSMutableURLRequest *request = [[NSMutableURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10];
[request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
NSString *str =@"type=focus-c";//设置参数
NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];
[requestsetHTTPBody:data];
//第三步,连接服务器
NSData *received = [NSURLConnectionsendSynchronousRequest:request
returningResponse:nilerror:nil];
NSString *str1 = [[NSStringalloc]initWithData:receivedencoding:NSUTF8StringEncoding];
// NSLog(@"%@",str1);
//TouchJson
NSString *jsonStr =[[NSStringalloc]initWithString:str1
];
//NSLog(@"%@",jsonStr);
//[[NSString alloc]initWithFormat:@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1:">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span
class="s1:">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"];
NSData *jsonData = [jsonStrdataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSMutableDictionary *root = [[CJSONDeserializerdeserializer]
deserialize:jsonDataerror:&error];
NSMutableArray *customers = [root
objectForKey:@"data"];
// NSString *jsonTextStr = @"姓名:\n";
NSLog(@"Customers:%@", customers );
//for (NSMutableDictionary *customer in customers) {
//NSString *name = [customer objectForKey:@"name"];
// name = [name stringByAppendingString:@"\n"];
// jsonTextStr = [jsonTextStr stringByAppendingString:name];
// NSLog(@"customer:%@",[customer objectForKey:@"name"]);
// }
//SBJson
// SBJsonParser *parser = [[SBJsonParser alloc] init];
// NSString *jsonStr =<p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span
class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>
// NSError *error = nil;
// NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:str1 error:&error]];
// //转换代码不然会带来中文问题,诸如加()、:变成 =等乱码问题
// SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];
// NSString *jsonString = [jsonWrite stringWithObject:root];
// NSLog(@"JsonString:%@", jsonString);
// // [jsonWrite release];
// NSMutableArray *customers = [root objectForKey:@"id"];
// NSLog(@"id:%@", customers);
//
// for (NSMutableDictionary *customer in customers) {
// NSLog(@"Customer-name:%@", [customer objectForKey:@"userid"]);
// }
// [self.jsonData setText:@"解析完成"];
// [self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];
}
网络中数据的传输往往是以Json或XML格式进行的,如新浪微博、腾讯微博、人人网等。今天主要介绍一下ios下Json数据的解析。
如果你还不了解什么是Json数据,请猛击。
首先是使用TouchJson进行解析:
TouchJson点击下载
首先导入
将Source文件加下的所以文件导入工程,在合适的位置添加CJSONDeserializer.h头文件。
代码:
[cpp] view
plaincopy
NSString *jsonStr = <p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>;
NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSMutableDictionary *root = [[CJSONDeserializer deserializer] deserialize:jsonData error:&error];
NSLog(@"Customers:%@", root);
NSMutableArray *customers = [root objectForKey:@"customer"];
NSString *jsonTextStr = @"姓名:\n";
for (NSMutableDictionary *customer in customers) {
NSString *name = [customer objectForKey:@"name"];
name = [name stringByAppendingString:@"\n"];
jsonTextStr = [jsonTextStr stringByAppendingString:name];
NSLog(@"customer:%@",[customer objectForKey:@"name"]);
}
输出结果:
[html] view
plaincopy
Customers:{
customer = (
{
name = roamer;
sumcount = "322.3";
ycount = "232.4";
},
{
name = "\U738b\U4e09";
sumcount = "1123.2";
ycount = "221.2";
},
{
name = "\U674e\U56db";
sumcount = "12123.2";
ycount = "1221.2";
}
);
}
2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:roamer
2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:王三
2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:李四
下面使用SBJson
SBJson下载
首先导入
将Classes文件加下的所以文件导入工程,在合适的位置添加SBJson.h头文件。
代码:
[cpp] view
plaincopy
//解析数据
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSString *jsonStr = <p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>
NSError *error = nil;
NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:jsonStr error:&error]];
//转换代码 不然会带来中文问题,诸如加()、:变成 = 等乱码问题
SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];
NSString *jsonString = [jsonWrite stringWithObject:root];
NSLog(@"JsonString:%@", jsonString);
[jsonWrite release];
NSMutableArray *customers = [root objectForKey:@"customer"];
NSLog(@"Customers:%@", customers);
for (NSMutableDictionary *customer in customers) {
NSLog(@"Customer-name:%@", [customer objectForKey:@"name"]);
}
[self.jsonData setText:@"解析完成"];
[self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];
使用TouchJson和SBJson都可以快速的完成Json数据的解析,两者使用起来都比较简单,但TouchJson性能更好一些推荐使用。
有问题请留言,大家一起交流学习!
{
NSURL *url = [NSURLURLWithString:@"http://192.168.1.152/apple_ios/index.php?g=mobile&m=activity&a=get_near_new_activity"];
//第二步,创建请求
NSMutableURLRequest *request = [[NSMutableURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10];
[request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
NSString *str =@"type=focus-c";//设置参数
NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];
[requestsetHTTPBody:data];
//第三步,连接服务器
NSData *received = [NSURLConnectionsendSynchronousRequest:request
returningResponse:nilerror:nil];
NSString *str1 = [[NSStringalloc]initWithData:receivedencoding:NSUTF8StringEncoding];
// NSLog(@"%@",str1);
//TouchJson
NSString *jsonStr =[[NSStringalloc]initWithString:str1
];
//NSLog(@"%@",jsonStr);
//[[NSString alloc]initWithFormat:@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1:">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span
class="s1:">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"];
NSData *jsonData = [jsonStrdataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSMutableDictionary *root = [[CJSONDeserializerdeserializer]
deserialize:jsonDataerror:&error];
NSMutableArray *customers = [root
objectForKey:@"data"];
// NSString *jsonTextStr = @"姓名:\n";
NSLog(@"Customers:%@", customers );
//for (NSMutableDictionary *customer in customers) {
//NSString *name = [customer objectForKey:@"name"];
// name = [name stringByAppendingString:@"\n"];
// jsonTextStr = [jsonTextStr stringByAppendingString:name];
// NSLog(@"customer:%@",[customer objectForKey:@"name"]);
// }
//SBJson
// SBJsonParser *parser = [[SBJsonParser alloc] init];
// NSString *jsonStr =<p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span
class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>
// NSError *error = nil;
// NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:str1 error:&error]];
// //转换代码不然会带来中文问题,诸如加()、:变成 =等乱码问题
// SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];
// NSString *jsonString = [jsonWrite stringWithObject:root];
// NSLog(@"JsonString:%@", jsonString);
// // [jsonWrite release];
// NSMutableArray *customers = [root objectForKey:@"id"];
// NSLog(@"id:%@", customers);
//
// for (NSMutableDictionary *customer in customers) {
// NSLog(@"Customer-name:%@", [customer objectForKey:@"userid"]);
// }
// [self.jsonData setText:@"解析完成"];
// [self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];
}
网络中数据的传输往往是以Json或XML格式进行的,如新浪微博、腾讯微博、人人网等。今天主要介绍一下ios下Json数据的解析。
如果你还不了解什么是Json数据,请猛击。
首先是使用TouchJson进行解析:
TouchJson点击下载
首先导入
将Source文件加下的所以文件导入工程,在合适的位置添加CJSONDeserializer.h头文件。
代码:
[cpp] view
plaincopy
NSString *jsonStr = <p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>;
NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSMutableDictionary *root = [[CJSONDeserializer deserializer] deserialize:jsonData error:&error];
NSLog(@"Customers:%@", root);
NSMutableArray *customers = [root objectForKey:@"customer"];
NSString *jsonTextStr = @"姓名:\n";
for (NSMutableDictionary *customer in customers) {
NSString *name = [customer objectForKey:@"name"];
name = [name stringByAppendingString:@"\n"];
jsonTextStr = [jsonTextStr stringByAppendingString:name];
NSLog(@"customer:%@",[customer objectForKey:@"name"]);
}
输出结果:
[html] view
plaincopy
Customers:{
customer = (
{
name = roamer;
sumcount = "322.3";
ycount = "232.4";
},
{
name = "\U738b\U4e09";
sumcount = "1123.2";
ycount = "221.2";
},
{
name = "\U674e\U56db";
sumcount = "12123.2";
ycount = "1221.2";
}
);
}
2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:roamer
2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:王三
2012-06-15 14:08:20.406 TouchJsonTest[1495:f803] customer:李四
下面使用SBJson
SBJson下载
首先导入
将Classes文件加下的所以文件导入工程,在合适的位置添加SBJson.h头文件。
代码:
[cpp] view
plaincopy
//解析数据
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSString *jsonStr = <p class="p1">@"{\"customer\":[{\"name\":\"roamer\",\"ycount\":\"232.4\",\"sumcount\":\"322.3\"},{\"name\":\"<span class="s1">王三</span>\",\"ycount\":\"221.2\",\"sumcount\":\"1123.2\"},{\"name\":\"<span class="s1">李四</span>\",\"ycount\":\"1221.2\",\"sumcount\":\"12123.2\"}]}"<span class="s2">;</span></p>
NSError *error = nil;
NSMutableDictionary *root = [[NSMutableDictionary alloc] initWithDictionary:[parser objectWithString:jsonStr error:&error]];
//转换代码 不然会带来中文问题,诸如加()、:变成 = 等乱码问题
SBJsonWriter *jsonWrite = [[SBJsonWriter alloc] init];
NSString *jsonString = [jsonWrite stringWithObject:root];
NSLog(@"JsonString:%@", jsonString);
[jsonWrite release];
NSMutableArray *customers = [root objectForKey:@"customer"];
NSLog(@"Customers:%@", customers);
for (NSMutableDictionary *customer in customers) {
NSLog(@"Customer-name:%@", [customer objectForKey:@"name"]);
}
[self.jsonData setText:@"解析完成"];
[self.parseBtn setTitle:@"Done" forState:UIControlStateNormal];
使用TouchJson和SBJson都可以快速的完成Json数据的解析,两者使用起来都比较简单,但TouchJson性能更好一些推荐使用。
有问题请留言,大家一起交流学习!
相关文章推荐
- Javascript模块化编程(二):AMD规范
- 关于json中对象的删除
- 7. JavaScript HTML DOM - 改变 CSS
- 6. JavaScript HTML DOM
- Javascript模块化编程(一):模块的写法
- Js Math.sin() 与 Math.cos() 用法
- JavaScript 变量 作用域 内存
- javascript实现根据3原色制作颜色选择器的方法
- AFNetworking如何post一个json数据到服务器
- 在JS中使用后台脚本字符串时注意点
- JavaScript学习笔记之BOM
- Javascript模块化编程(三):require.js的用法
- js获取int类型数字,长度过长出现错误
- Jsoup select 选择器
- jsp页面刷新后保留文本输入框和下拉框的值
- JavaScript Function类型
- javascript面试题(一)
- [WebKit] JavaScriptCore解析
- JavaScript核心指南(JavaScript. The Core.)
- JavaScript框架(库)