由于后台的变态,有时候会出现两层甚至多层嵌套的JSON包。

一层的很好解,而且我看过一些比较大的网站新闻接口返回的JSON包也仅仅是一层的。

比如下图所示一层的包

代码也很简单直观

    dict = [data objectFromJSONData]; // 这里可能会转换失败,还需要接着做判断

    _dinnArray = [[NSMutableArray alloc] init];
_dataArray = [dict objectForKey:@"data"];
for (NSDictionary *DinnDict in _dataArray) {
Service *servic = [[Service alloc]init];
servic.name = [DinnDict objectForKey:@"names"];
servic.time = [DinnDict objectForKey:@"server_time"];
servic.tel = [DinnDict objectForKey:@“tel”];
[_dinnArray addObject:servic];
}

读取_dinnArray的时候也很简单

    Service *service = [_dinnArray objectAtIndex:indexPath.row];

两层的嵌套,看了很多网上的帖子,都会出错。

针对如下图所示的包

代码今天暂时就不强调重点了。先贴在下面

    dict = [data objectFromJSONData];
_dataArray= [[dict objectForKey:@"data"]retain];
for (NSDictionary*ScourDict in _dataArray) {
_listArray=[ScourDict objectForKey:@"tel_list"];
NSMutableArray*scourArray=[[NSMutableArray alloc]init];
//NSLog(@"scoreArray remove %@",scourArray);
for (NSDictionary*listDict in _listArray) {
//NSLog(@"listDict %@",listDict);
//NSLog(@"listDict count %d",[listDict count]);
Address*address=[[Address alloc]init];
address.namelist=[listDict objectForKey:@"name_contacts"];
address.phone=[listDict objectForKey:@"phone_number"];
[scourArray addObject:address];
}
[_fourArray addObject:scourArray];
}

读取数组部分

    _adressArray=[_fourArray objectAtIndex:indexPath.section];
Address*address=[_adressArray objectAtIndex:indexPath.row];

重点是,在存的部分,scourArray必须为局部变量,不然只能存储上最后一组数据,前面的都会被覆盖掉。

另外,读的部分,要套两层才能把Array读出来。这类似一个二维数组的变通实现方法。存,存的是一个二维的数组;读,读的也是一个二维数组。

两层嵌套的JSON包的解法的更多相关文章

  1. 两层嵌套list,选取list中最长的list的长度

    # coding=utf-8 import pandas as pd file_path = "test_aa.xlsx" dt = pd.read_excel(file_path ...

  2. [转]oracle分页用两层循环还是三层循环?

    select t2.* from --两层嵌套 (select t.* , rownum as row_numfrom t where rownum <=20) t2 where t2.row_ ...

  3. js解析多层嵌套的json,取出所有父元素属性和遍历所有子元素

    已知一个多层嵌套的json,取出所有父元素和子元素的id值 思路:因为不知道到底嵌套了多少层,递归有可能造成栈溢出.查询时间特别久的问题 所以先查询一次,判断是否有子节点,如果有,取出子节点并到父节点 ...

  4. 两层fragment嵌套时出现空白,(收藏别人的)

    完美解决 两层Fragment,内层空白 转载:http://blog.csdn.net/bingospunky/article/details/51352400 目录(?)[+] 前言 两层Frag ...

  5. 两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容

    尊重他人劳动成果,转载请说明出处:http://blog.csdn.net/bingospunky/article/details/46847269 需求 在搭界面有这么样一个需求:须要两层的Frag ...

  6. Java创建和解析Json数据方法(二)——org.json包的使用

    (二)org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...

  7. Java创建和解析Json数据方法——org.json包的使用(转)

    org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...

  8. Linux网络栈下两层实现

    http://www.cnblogs.com/zmkeil/archive/2013/04/18/3029339.html 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linu ...

  9. Java中net.sf.json包关于JSON与对象互转的问题

    在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...

随机推荐

  1. slf4j 之logback日志之sl4j架构【二】

    一.整体介绍 介绍: The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for v ...

  2. mac搭建cordova的android环境

    搭建步骤: 1,下载cordova-android解压到自己目录 2,安装node.js:下载地址:http://nodejs.org/,解压按步骤安装即可,检测在终端输入:#npm 3,安装dos2 ...

  3. MySql5.6性能优化

    目标 了解什么是优化 掌握优化查询的方法 掌握优化数据库结构的方法 掌握优化MySQL服务器的方法 什么是优化? 合理安排资源.调整系统参数使MySQL运行更快.更节省资源. 优化是多方面的,包括查询 ...

  4. Hibernate3 第一天

    Hibernate3 第一天 课程安排:4天(框架的使用+理论知识) 第一天Hibernate快速入门(单表的CRUD)+核心api讲解(配置+接口) 第二天:Hibernate一级缓存,快照,对象持 ...

  5. PHP全角半角转换函数

    之前试过网上找的通过ASCII之类的字符替换,发现很多莫名其妙的问题.最后还是换成下面的字符替换方式了,把目前能找到的所有全角都列出来了一个个替换吧 /** * 全角字符转换为半角 * * @para ...

  6. javascript 拖放效果

    最近一直在看javascript的书籍,有些东西在书上看着貌似理解了,但是在真正动手实践时,其实有些细节你根本不了解.所以看起来就算是一个简单的效果,写起来也未必简单,就算写起来简单,写的代码也未必规 ...

  7. 7、js使用正则表达式验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Andorid第三方库

    博客: http://blog.csdn.net/codywangziham01/article/details/11818559#t8 RoboGuice: http://www.importnew ...

  9. 洛谷-生活大爆炸版石头剪刀布-NOIP2014提高组复赛

     题目描述 Description 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头剪刀布的升级版 ...

  10. Openjudge-计算概论(A)-能被3,5,7整除的数

    描述: 输入一个整数,判断它能否被3,5,7整除,并输出以下信息:1.能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格):2.能被其中两个数整除(输出两个数,小的在前,大的在后.例如:3 ...