2017-05-04 100 views
-1

我有一个JSON数组与多个对象,我不知道如何抓住“url”标签作为NSArray或NSDictionary,并显示在CollectionView中的图像URL。我无法更改JSON数据格式。如何执行此操作?IOS JSON解析承载多个阵列

这里是JSON响应的样子:

{ 
    "error": false, 
    "data": [ 
    { 
     "albumid": 2, 
     "albumtitle": "Album 2", 
     "images": [ 
     { 
      "image": "Img2.jpeg", 
      "imageid": 11 
     }, 
     { 
      "image": "vr4.jpg", 
      "imageid": 4 
     }, 
     { 
      "image": "3purple b-ball.jpg", 
      "imageid": 3 
     } 
     ] 
    }, 
    { 
     "albumid": 3, 
     "albumtitle": "Album 3", 
     "images": [ 
     { 
      "image": "vr2.jpg", 
      "imageid": 6 
     }, 
     { 
      "image": "vr1.jpg", 
      "imageid": 5 
     } 
     ] 
    }, 
    { 
     "albumid": 4, 
     "albumtitle": "Album 4", 
     "images": [ 
     { 
      "image": "vr1.jpg", 
      "imageid": 8 
     } 
     ] 
    }, 
    { 
     "albumid": 12, 
     "albumtitle": "My Album", 
     "images": [ 
     { 
      "image": "img3.jpeg", 
      "imageid": 64 
     }, 
     { 
      "image": "img4.jpeg", 
      "imageid": 63 
     }, 
     { 
      "image": "img5.jpeg", 
      "imageid": 62 
     } 
     ] 
    }, 
    { 
     "albumid": 13, 
     "albumtitle": "Demo Album", 
     "images": [ 
     { 
      "image": "img6.jpeg", 
      "imageid": 67 
     }, 
     { 
      "image": "img7.jpeg", 
      "imageid": 66 
     }, 
     { 
      "image": "img11.jpeg", 
      "imageid": 65 
     } 
     ] 
    } 
    ] 
} 
+0

您需要根据截面按照您的json结构显示图像。 – KKRocks

+0

也指定语言。 –

+0

我在做Objective C @SakirSherasiya –

回答

0

尝试是这样的(数据是NSData对象从您的网络服务器获取):

NSError *jsonError = nil; 
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; 

if(!jsonError){ 
    NSArray *dataArray = [jsonData objectForKey:@"data"]; 
    NSDictionary *albumDict = [dataArray objectAtIndex:0]; 
    NSArray *imagesArray = [albumDict objectForKey:@"images"]; 
    NSDictionary *imageDict = [imagesArray objectAtIndex:0]; 
    NSString *imageURL = [imageDict objectForKey: @"image"]; 
} 

当然,你必须使用循环的数组元素,这个例子仅仅是与元素0一些更多的检查,如果一个领域存在等将是很好的。

+0

This Worked !!!!! Thx花花公子........ –

0

您可以创建一个模型来保存图像标识和网址。在主模型(相册)中添加这些图像对象的数组。在斯威夫特,你的模型可能看起来像这样

class Album { 
    var albumId = "" 
    var albumTitle = "" 
    var albumImages = [AlbumImage]() 
} 

class AlbumImage { 
    var imageId = "" 
    var imageUrl = "" 
} 

希望这有助于!

0

下载了json文件后使用此代码。

NSDictionary *rootDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; 
NSArray *rootArray = rootDict[@"data"]; 
NSDictionary *subDict; 
NSArray *subArray; 
NSDictionary *tempDict; 

for (int i=0; i<rootArray.count; i++) { 
    subDict = rootArray[i]; 
    subArray = subDict[@"images"]; 
    for (int j=0; j<subArray.count; j++) { 
     tempDict = subArray[j]; 
     NSLog(@"%@",tempDict[@"image"]); 
    } 
} 
在JSONObjectSerialization

数据是在JSON文件下载NSData对象。

+0

@Azim谢赫尝试完全工作的代码。 –