IOS JSON解析承载多个阵列
我有一个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
}
]
}
]
}
尝试是这样的(数据是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一些更多的检查,如果一个领域存在等将是很好的。
This Worked !!!!! Thx花花公子........ –
您可以创建一个模型来保存图像标识和网址。在主模型(相册)中添加这些图像对象的数组。在斯威夫特,你的模型可能看起来像这样
class Album {
var albumId = ""
var albumTitle = ""
var albumImages = [AlbumImage]()
}
class AlbumImage {
var imageId = ""
var imageUrl = ""
}
希望这有助于!
下载了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对象。
@Azim谢赫尝试完全工作的代码。 –
您需要根据截面按照您的json结构显示图像。 – KKRocks
也指定语言。 –
我在做Objective C @SakirSherasiya –