2012-10-08 162 views
0

我被困在json对象解析中真的很努力。问题是如何解析json对象。以下是我在日志中得到的回复。如何解析Json对象

{"0":{"**title**":"Test Event","url_title":"test_event1","status":"open","entry_date":"Sep 10, 2012, 

05:20:38AM","entry_id":"26","site_id":"1","channel_id":"3","field_dt_40":null,"field_dt_58":null,"channel_title":"News & 

Events","channel_name":"news_events","start_date":"1348120800","end_date":"1348120800","start_time": "43200","end_time":"46800","where":"FCF","news_event_description":"<p>\n\tLunch with group.<\/p>\n"}, 

"1":{"**title**":"Test Event 2","url_title":"test_event_2","status":"open","entry_date":"Sep 10, 2012, 05:20:08AM","entry_id":"28","site_id":"1","channel_id":"3","field_dt_40":null,"field_dt_58":null,"channel_title":"News & Events","channel_name":"news_events","start_date":"1348207200","end_date":"1348207200","start_time":"43200","end_time":"46800","where":"FCF - Lunch","news_event_description":"<p>\n\tThis was a great event.<\/p>\n"}, 

"2":{"**title**":"Test Event 3","url_title":"test_event_3","status":"open","entry_date":"Sep 10, 2012, 05:20:54AM","entry_id":"29","site_id":"1","channel_id":"3","field_dt_40":null,"field_dt_58":null,"channel_title":"News & Events","channel_name":"news_events","start_date":"1346738400","end_date":"1346738400","start_time":"7200","end_time":"11700","where":"FCF - Lunch","news_event_description":"<p>\n\tFall planning season.<\/p>\n"}} 

问题是我想显示在tableview中的所有标题。我可以通过使用键0,1,2获得单个标题。但我想显示所有的标题一次我解析

请帮我出人,在此先感谢。

+0

http://stackoverflow.com/questions/3165290/how-to-parsing-json-object-in-iphone-sdk- xcode-using-json-framework这个链接可能会帮助你.. – SachinVsSachin

回答

3

假设jsonDict是您的JSON字典....试试这个

NSArray * keys=[[NSArray alloc]init]; 
keys=[jsonDict allKeys]; 
NSMutableArray *titles=[[NSMutableArray alloc]init]; 
for(int i=0;i<[keys count];i++){ 
     [titles addObject:[[jsonDict valueForKey:[keys objectAtIndex:i]]valueForKey:@"title"]]; 
} 
NSLog(@"your array of titles : %@",titles); //use this array to fill your cell 
+0

爱你兄弟..认真的男人你真诚..非常感谢你,上帝保佑你兄弟...我会保持联系的人....不要忘记我:) – Joker

+3

@Neo,你的第一个行是不必要的 - 您创建一个空数组,然后将相同的变量分配给allKeys返回的数组。它应该是NSArray *键= [jsonDict allKeys]; – rdelmar

2

你试图自己解析JSON吗?您可能会发现使用TouchJSON或Apple自己的NSJSONSerilization等已经经过良好测试的东西更容易。结果应该是你可以使用的Objective-C对象图。

在任何情况下,你在那里都有相当于一本字典的词典。如果你有一个的NSDictionary叫myJSONDictionary,你可以说:

NSArray *theObjects = [myJSONDictionary allValues]; // gets all the objects 
NSArray *theTitles = [theObjects valueForKey:@"**title**"]; // gets all the titles 

您还可以通过词典使用快速枚举迭代:

NSMutableArray *theTitles = [NSMutableArray array]; 
for (NSString *key in myJSONDictionary) { 
    NSDictionary *object = [myJSONDictionary objectForKey:key]; 
    NSString *title = [object objectForKey:@"**title**"]; 
    [theTitles addObject:title] 
} 

有没有真正的好处,这样做,而不是使用KVC如第一个例子所示,如果您只需要标题,但如果您需要为每个对象执行更复杂的工作,则这可能是正确的选择。

+0

好的谢谢。但是,帮助我兄弟。我只需要一些能够动态解析json对象的代码。在我的问题0,1,2在那里,这可能会增加r减少,所以我想动态地解析所有的关键。 Plz plz – Joker