在做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. python基础语法(2)

    2. 元组 tuple和list十分相似,但是tuple是不可变的,即不能修改tuple,元组通过圆括号中用逗号分割的项定义:支持索引和切片操作:可以使用 in 查看一个元素是否在tuple中.空元组 ...

  2. MySQL使用小记

    时间格式化: select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s'); 去重复: use iksdb3; select distinct ` ...

  3. 【转】移动端viewport的使用

    web端网站转移至移动端页面,注意点如下: 1.首先引入viewport调整页面宽度 <meta name="viewport" content="width=de ...

  4. 调用数据库函数CallableStatement

  5. 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析

    今天学习了scala的界定,先来看看下面这段代码 //class Pair[T] (val first : T,val second : T)class Pair[T <: Comparable ...

  6. 第91讲:Akka第一个案例动手实战架构设计

    我们来看一下Akka的一个简单的wordcount的案例架构设计 从图中我们可以看出,不同的行我们是交给不同的actor进行入理的,每行首先进行map操作,识别出每个单词,然后交给reduce步骤的a ...

  7. Python成长笔记 - 基础篇 (五)

    1.装饰器: 装饰器:器代表函数的意思,装饰器就是一个函数,作用是用来装饰其他的函数 原则: 1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 实现装饰器所需要的知识: 1.函数即变量 ...

  8. hdu 5682 zxa and leaf

    zxa and leaf  Accepts: 25  Submissions: 249  Time Limit: 5000/2500 MS (Java/Others)  Memory Limit: 6 ...

  9. 《Diagnostic use of facial image analysis software in endocrine and genetic disorders: review, current results and future perspectives》学习笔记

    <使用面部图像分析软件诊断内分泌和遗传疾病:回顾,当前研究结果以及未来展望> Abstract 库欣综合征(CS)和肢端肥大症普遍是在发病后几年才能被诊断出的内分泌疾病.现在需要新的诊断方 ...

  10. 跟我一起学WCF(6)——深入解析服务契约[下篇]

    一.引言 在上一篇博文中,我们分析了如何在WCF中实现操作重载,其主要实现要点是服务端通过ServiceContract的Name属性来为操作定义一个别名来使操作名不一样,而在客户端是通过重写客户端代 ...