首页 > 代码库 > 两层嵌套的JSON包的解法
两层嵌套的JSON包的解法
由于后台的变态,有时候会出现两层甚至多层嵌套的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读出来。这类似一个二维数组的变通实现方法。存,存的是一个二维的数组;读,读的也是一个二维数组。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。