在做quhao APP架构时,后台Server端使用了Java,提供WebService,而iOS和Android作为移动客户端。在做数据交互时,Server端返回JSON格式数据。由于iOS SDK中提供的JSON数据解析实在太过麻烦,这里讲下iOS下如何使用SBJson库来解析JSON格式数据。

首先我发起了一个HTTP请求,得到一个response字符串,此字符串是JSON格式:

NSURL *url = [NSURL URLWithString:@"http://192.168.1.2:9081/allCategories"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *httpError = [request error];
NSString *response = @"";
if (!httpError) {
response = [request responseString];
// NSLog(@"%@", response);
}

返回的数据格式如下:

[{"count":1000,"cateType":"benbangcai"},{"count":478,"cateType":"hanguoliaoli"},{"count":999,"cateType":"huoguo"},{"count":1000,"cateType":"mianbaodangao"},{"count":998,"cateType":"ribenliaoli"},{"count":1000,"cateType":"tianpinyinpin"},{"count":584,"cateType":"xiangcai"},{"count":999,"cateType":"chuancai"},{"count":260,"cateType":"dongnanyacai"},{"count":311,"cateType":"haixian"},{"count":1000,"cateType":"shaokao"},{"count":984,"cateType":"xiaochikuaican"},{"count":999,"cateType":"xican"},{"count":210,"cateType":"xinjiangqingzhen"},{"count":771,"cateType":"yuecaiguan"},{"count":1000,"cateType":"zhongcancaixi"},{"count":316,"cateType":"zizhucan"}]

我们可以看到JSON数据格式是非常整齐的,下面我们就使用SBJson来解析每一个数据块的2个值:count和cateType。

// 解析Server端返回的JSON数据
SBJsonParser *jsonParser = [[SBJsonParser alloc] init]; //初始化SBJsonParser
NSError *error = nil;
NSArray *jsonObjects = [jsonParser objectWithString:response error:&error];
[jsonParser release], jsonParser = nil; for (NSDictionary *dict in jsonObjects) {
NSString *value1 = [dict objectForKey:@"cateType"];
NSString *value2 = [dict objectForKey:@"count"];
NSLog(@" value1 is : %@", value1);
NSLog(@" value2 is : %@", value2);
}

运行后打印结果:

2013-07-23 21:16:28.962 quhaoIOS[832:c07]  value1 is : benbangcai
2013-07-23 21:16:28.962 quhaoIOS[832:c07] value2 is : 1000
2013-07-23 21:16:28.963 quhaoIOS[832:c07] value1 is : hanguoliaoli
2013-07-23 21:16:28.963 quhaoIOS[832:c07] value2 is : 478
2013-07-23 21:16:28.963 quhaoIOS[832:c07] value1 is : huoguo
2013-07-23 21:16:28.963 quhaoIOS[832:c07] value2 is : 999
2013-07-23 21:16:28.964 quhaoIOS[832:c07] value1 is : mianbaodangao
2013-07-23 21:16:28.964 quhaoIOS[832:c07] value2 is : 1000
2013-07-23 21:16:28.964 quhaoIOS[832:c07] value1 is : ribenliaoli
2013-07-23 21:16:28.964 quhaoIOS[832:c07] value2 is : 998
2013-07-23 21:16:28.965 quhaoIOS[832:c07] value1 is : tianpinyinpin
2013-07-23 21:16:28.965 quhaoIOS[832:c07] value2 is : 1000
2013-07-23 21:16:28.965 quhaoIOS[832:c07] value1 is : xiangcai
2013-07-23 21:16:28.966 quhaoIOS[832:c07] value2 is : 584
2013-07-23 21:16:28.966 quhaoIOS[832:c07] value1 is : chuancai
2013-07-23 21:16:28.966 quhaoIOS[832:c07] value2 is : 999
2013-07-23 21:16:28.966 quhaoIOS[832:c07] value1 is : dongnanyacai
2013-07-23 21:16:28.967 quhaoIOS[832:c07] value2 is : 260
2013-07-23 21:16:28.967 quhaoIOS[832:c07] value1 is : haixian
2013-07-23 21:16:28.967 quhaoIOS[832:c07] value2 is : 311
2013-07-23 21:16:28.967 quhaoIOS[832:c07] value1 is : shaokao
2013-07-23 21:16:28.968 quhaoIOS[832:c07] value2 is : 1000
2013-07-23 21:16:28.968 quhaoIOS[832:c07] value1 is : xiaochikuaican
2013-07-23 21:16:28.968 quhaoIOS[832:c07] value2 is : 984
2013-07-23 21:16:28.969 quhaoIOS[832:c07] value1 is : xican
2013-07-23 21:16:28.969 quhaoIOS[832:c07] value2 is : 999
2013-07-23 21:16:28.969 quhaoIOS[832:c07] value1 is : xinjiangqingzhen
2013-07-23 21:16:28.969 quhaoIOS[832:c07] value2 is : 210
2013-07-23 21:16:28.970 quhaoIOS[832:c07] value1 is : yuecaiguan
2013-07-23 21:16:28.970 quhaoIOS[832:c07] value2 is : 771
2013-07-23 21:16:28.970 quhaoIOS[832:c07] value1 is : zhongcancaixi
2013-07-23 21:16:28.970 quhaoIOS[832:c07] value2 is : 1000
2013-07-23 21:16:28.971 quhaoIOS[832:c07] value1 is : zizhucan
2013-07-23 21:16:28.971 quhaoIOS[832:c07] value2 is : 316
 
 

iOS解析Server端返回JSON数据的更多相关文章

  1. fastjson解析服务端返回的数据

    1.配置依赖 //fastjson api 'com.alibaba:fastjson:1.2.44' 2.设计服务端返回的数据 {},{},{}]} 3.编写bean类,特别注意,要和服务端返回的类 ...

  2. android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

    补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访 ...

  3. Query通过Ajax向PHP服务端发送请求并返回JSON数据

    Query通过Ajax向PHP服务端发送请求并返回JSON数据 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuer ...

  4. jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    SON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用.请接着往下看教 ...

  5. 【JEMTER】后置处理器JSON Path Extractor获取server端返回的json中某项值

    需求1:点击所有报表模板时,server端返回所有报表模板的ID(templateId),测试时需要下载某个模板生成的报表 需求2:点击单个报表模板时,server端返回这个报表模板下的所有报表ID( ...

  6. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  7. Spring Boot返回json数据及完美使用FastJson解析Json数据

     Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...

  8. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  9. (转)Struts2返回JSON数据的具体应用范例

    转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

随机推荐

  1. java-GUI图形用户界面

    图形用户界面GUI(Graphical User Interface),指的是在一个程序中用户可以看到的和与之交互的部分. JavaAPI中提供两套组件用于支持编写用户界面AWT  and  Swin ...

  2. Android之ListView——ArrayAdapter的学习与总结

    问题:当ListView选定的ListItem视图中存在一些UI组件,如CheckBox,希望保存状态,但实际上第一次完成时发现勾选后的选项在列表往下滑再滑回去后,状态没有保存 解决过程: 1)思考后 ...

  3. 关于把A表中的数据复制到B表中(整理)

    如果A,B两个表中没有重复数据且表结构一样可以直接 insert into B select * from A 如果结构不一样可以 insert into B(字段列表),select 字段列表 fr ...

  4. 四色定理+dfs(poj 1129)

    题目:Channel Allocation 题意:要求A:BCD,A与B,C,D都不相同,求不同的值,典型的四色定理: #include <iostream> #include <a ...

  5. Linux开启关闭redis

    1.启动:redis-server(redis-server redis.conf) 2.登陆:redis-cli(redis-cli -p 6379) 3.关闭:redis-cli shutdown

  6. Python成长笔记 - 基础篇 (一)python简介

    一.Python介绍 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),由吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于1991 ...

  7. 用代码控制UI界面

           public class MainActivity extends Activity { //当第一次创建Activity时回调该方法 @Override protected void ...

  8. C++混合编程之idlcpp教程Python篇(2)

    在上一篇 C++混合编程之idlcpp教程(一) 中介绍了 idlcpp 工具的使用.现在对 idlcpp 所带的示例教程进行讲解,这里针对的 Python 语言的例子.首先看第一个示例程序 Pyth ...

  9. vimium: 浏览器神器

    chrome firefox 都有 vimium (firefox 中为vimfx), 快捷键也差不多 下边是chrome中快捷键示意图: G = shift + g (其他同理) c+e = ctr ...

  10. MySQL prepare 原理

    Prepare的好处  Prepare SQL产生的原因.首先从mysql服务器执行sql的过程开始讲起,SQL执行过程包括以下阶段 词法分析->语法分析->语义分析->执行计划优化 ...