您的模型看起来不够好。但为什么只有NSStrings
为Item。根据你的描述项目模型类应如下:
@interface Item: NSObject{
NSString *title;
NSString *description;
NSURL *itemURL;
UIImage *image;
}
可以使用NSJSONSerialization
用于分析JSON。对于如:
如果你有一个JSON字符串就像下面你可以分析它象下面这样:
NSString *jsonString= @"{ \"category1\": [ { \"iTitle\" : \"item1\", \"iDescription\":\"desc1\"},{ \"iTitle\" : \"item2\", \"iDescription\":\"desc2\"}]}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
如果你想解析,并把它在课堂上,你可以做到以下几点:
for (NSString *category in jsonObj) {
Category *categoryObj = [[Category alloc] init];
categoryObj.title = category;
NSArray *itemArray = [jsonObj valueForKey:category];
for (NSDictionary *item in itemArray) {
Item *itemObj = [[Item alloc] init];
itemObj.title = [item valueForKey:@"title"];
itemObj.description= [item valueForKey:@"description"];
[categoryObj.items addObject:itemObj];
}
}
要遍历一个字典(或字符串中访问“类别1”
@"{ \"tab1\": [{ \"category1\": [ { \"iTitle\" : \"item1\", \"iDescription\":\"desc1\"},{ \"iTitle\" : \"item2\", \"iDescription\":\"desc2\"}]}}"
可以使用在循环。
NSDictionary *categoryDict = [[jsonObj valueForKey:"tab1"] objectAtIndex:0];
for (id key in categoryDict){
NSLog(@"Key : %@",key);
NSLog(@"Value: %@",[categorDict valueForKey:key];
}
谢谢,真的很好的答案! – Jojo 2013-04-24 07:21:16
没问题。如果您认为这是可以接受的解决方案。 – Rakesh 2013-04-24 09:06:38
我还有一个问题。我在我的JSON中做了一些更改。现在我也有一个“标签”。像这样: NSString * jsonString = @“{”tab1 \“:[{\”category1 \“:[{\”iTitle \“:\”item1 \“,\”iDescription \“:\”desc1 \ “},{\”iTitle \“:\”item2 \“,\”iDescription \“:\”desc2 \“}]}}]”; 我可以达到tab1,就像你在jsonObj中使用NSString *标签一样。但是,我如何达到类别名称? – Jojo 2013-04-24 10:55:42