Iphone 如何解析Json对象

Iphone 如何解析Json对象,iphone,objective-c,ios,xcode,json,Iphone,Objective C,Ios,Xcode,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,"c

我被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"}}
{“0”:{“**title**”:“测试事件”,“url\u title”:“测试事件1”,“状态”:“打开”,“输入日期”:“2012年9月10日,
05:20:38AM,“条目id:”26“,”站点id:”1“,”频道id:”3“,”字段id:”空“,”字段id:”空“,”频道标题“:”新闻和
“事件”,“频道名称”:“新闻事件”,“开始日期”:“1348120800”,“结束日期”:“1348120800”,“开始时间”:“43200”,“结束时间”:“46800”,“其中”:“FCF”,“新闻事件描述”:“\n\t与组一起取消。\n”,
“1”:“{**title**”:“测试事件2”,“url_title”:“测试事件2”,“状态”:“打开”,“进入日期”:“2012年9月10日,05:20:08AM”,“进入id”:“28”,“站点id”:“1”,“频道id”:“3”,“字段dt_40”:null,“字段dt_58”:null,“频道标题”:“新闻和事件”,“频道名称”:“新闻事件”,“开始日期”:“1348207200”,“结束日期”:“1348207200”,“开始时间”:“43200”,“结束时间”:”,其中:“FCF-午餐”,“新闻事件描述”:“\n\t这是一个伟大的事件。\n”},
“2”:“{**title**”:“测试事件3”,“url_title”:“测试事件3”,“状态”:“打开”,“进入日期”:“2012年9月10日,05:20:54上午”,“进入id”:“29”,“站点id”:“1”,“频道id”:“3”,“字段dt_40”:null,“字段dt_58”:null,“频道标题”:“新闻和事件”,“频道名称”:“新闻事件”,“开始日期”:“1346738400”,“结束日期”:“1346738400”,“开始时间”:“7200”,“结束时间”:”,其中:“FCF-午餐”,“新闻事件描述”:“\n\t所有计划季节。\n”}
问题是我想在tableview中显示所有标题。我可以使用0,1,2键获得单个标题。但我希望所有的标题都能一次显示出来


请帮帮我,伙计们,提前谢谢。

你是想自己解析JSON吗?您可能会发现使用经过良好测试的东西更容易,例如TouchJSON或苹果自己的。结果应该是Objective-C对象的图形,您可以随意使用

在任何情况下,你所拥有的都相当于一本词典。如果您将其作为名为
myJSONDictionary
的NSDictionary,您可以说:

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代替第一个示例中的KVC没有什么真正的好处,但是如果您需要为每个对象做更复杂的工作,那么它可能是正确的选择。

您是否正在尝试自己解析JSON?您可能会发现使用经过良好测试的东西更容易,例如TouchJSON或苹果自己的。结果应该是Objective-C对象的图形,您可以随意使用

在任何情况下,你所拥有的都相当于一本词典。如果您将其作为名为
myJSONDictionary
的NSDictionary,您可以说:

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代替第一个示例中的KVC没有什么真正的好处,但是如果您需要为每个对象做更复杂的工作,那么它可能是正确的选择。

假设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
NSArray*键=[[NSArray alloc]init];
keys=[jsonDict allKeys];
NSMutableArray*titles=[[NSMutableArray alloc]init];

对于(inti=0;i假设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
NSArray*键=[[NSArray alloc]init];
keys=[jsonDict allKeys];
NSMutableArray*titles=[[NSMutableArray alloc]init];

对于(int i=0;看,谢谢。但是,帮帮我,兄弟。我只需要一些动态解析json对象的代码。在我的问题0,1,2中,这可能会增加或减少,所以我想动态解析所有键。Plz plzok谢谢。但是,帮帮我,兄弟。我只需要一些动态解析json对象的代码。在我的问题0,1,2中在那里,这可能会增加或减少,所以我想动态解析所有的键。Plz Plz这个链接可能会帮助你。这个链接可能会帮助你。爱你兄弟。严肃地说,你是个天才。非常感谢你,…上帝保佑你兄弟…我会保持联系的。别忘了我:)@Neo,你的第一行是不必要的——你创建了一个空数组,然后将同一个变量分配给allKeys返回的数组。它应该是NSArray*keys=[jsonDict allKeys];Love u bro.说真的,你很善良..非常感谢你,…上帝保佑你兄弟…我会保持联系的,伙计..别忘了我:)@Neo,您的第一行是不必要的——您创建了一个空数组,然后将相同的变量分配给allKeys返回的数组;