標籤:c style class blog code java
由於背景變態,有時候會出現兩層甚至多層嵌套的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讀出來。這類似一個二維數組的變通實現方法。存,存的是一個二維的數組;讀,讀的也是一個二維數組。