在做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. require.js 使用博客

    没时间写博客,又觉得这篇很不错,或许以后能用到,只能copy与点赞: Javascript模块化编程(三):require.js的用法   作者: 阮一峰 日期: 2012年11月 7日 这个系列的第 ...

  2. umask函数

    umask函数为进程设置文件模式创建屏蔽字,并返回以前的值. #include <sys/stat.h> mode_t umask( mode_t cmask); 返回值:以前的文件模式创 ...

  3. 用scala实现一个sql执行引擎-(上)

    前言 在实时计算中,通常是从队列中收集原始数据,这种原始数据在内存中通常是一个java bean,把数据收集过来以后,通常会把数据落地到数据库,供后面的ETL使用.举个一个简单的例子,对一个游戏来说, ...

  4. bzoj 3389

    题意:给定1维连续T<= 1000000个点,以及n<=10000个线段,求最少的线段覆盖该区间.. 思路:很显然,贪心是可以做的..不过这一题最有意思的是使可以转换为最短路模型.. 如果 ...

  5. Print2flash在.NET(C#)中的使用,即文档在线预览

    office文档(word,excel,ppt)在线预览查看,有很多种方式,比如可以 1.调用weboffice组件,进行word预览,要求客户端安装word,仅适用IE, word2013, IE1 ...

  6. 2014 年 20 款最好的 CSS 工具

    说到 WEB 设计,不得不介绍介绍 CSS 工具,CSS 工具在这里面扮演很重要的角色,可以简化无数开发者和设计师的工作,写出更好的 CSS 代码. 而网上有非常多的 CSS 工具,帮助设计师和开发者 ...

  7. Ember.js系列文章

    JS前端框架之Ember.js系列文章 本文为文章索引,主要是罗列Ember.js的相关文章便于阅读. 相关演示代码:github for free. 基础篇 1. EmberJs之What|Why| ...

  8. 跟我一起学WCF(11)——WCF中队列服务详解

    一.引言 在前面的WCF服务中,它都要求服务与客户端两端都必须启动并且运行,从而实现彼此间的交互.然而,还有相当多的情况希望一个面向服务的应用中拥有离线交互的能力.WCF通过服务队列的方法来支持客户端 ...

  9. AutoMapper在ABP框架中的使用说明

    为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该用它实战的时候了.今天,我们就来揭开AutoM ...

  10. unity3D——自带寻路Navmesh入门教程(二)(转)

    转自:http://liweizhaolili.blog.163.com/blog/static/16230744201271210237616/ 上一节简单介绍了NavMesh寻路的基本用法,这次来 ...