您的模型看起來不夠好。但爲什麼只有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