• 两层嵌套的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读出来。这类似一个二维数组的变通实现方法。存,存的是一个二维的数组;读,读的也是一个二维数组。

     

  • 相关阅读:
    贪心法
    div 样式
    echarts标题(title)配置
    利用svg画路径图 vue
    vue 杂项
    Charset 0x0408D00000/MS936 is not supported by the JVM
    Android开发中Eclipse常用快捷键
    Java 中强制删除文件的方法
    利用html5的localStorage结合jquery实现日常费用查询器
    Ant编译utf8非法字符:/65279 解决方法
  • 原文地址:https://www.cnblogs.com/guozai9527/p/3760150.html
Copyright © 2020-2023  润新知