【问题标题】:How to parse Json object如何解析 Json 对象
【发布时间】:2012-09-28 08:20:52
【问题描述】:

我被困在 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、1、2 获得单个标题。但我希望我解析后立即显示所有标题

请帮帮我,提前谢谢。

【问题讨论】:

标签: iphone objective-c ios xcode json


【解决方案1】:

您是否尝试自己解析 JSON?您可能会发现使用已经过良好测试的东西会更容易,例如 TouchJSON 或 Apple 自己的 NSJSONSerilization。结果应该是您可以随意使用的 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 并没有真正的优势,但如果您需要为每个对象执行更复杂的工作,这可能是正确的选择。

【讨论】:

  • 好的,谢谢。但是,帮帮我吧兄弟。我只需要一些可以动态解析 json 对象的代码。在我的问题 0,1,2 那里,可能会增加 r 减少,所以我想动态解析所有键。拜托拜托
【解决方案2】:

假设 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

【讨论】:

  • 爱你,兄弟.. 说真的,你的天才.. 非常感谢你,.. 上帝保佑你,兄弟......我会保持联系......不要忘记我 :)
  • @Neo,您的第一行是不必要的——您创建一个空数组,然后将相同的变量分配给 allKeys 返回的数组。它应该只是 NSArray *keys = [jsonDict allKeys];
猜你喜欢
  • 2017-09-24
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 2019-12-01
相关资源
最近更新 更多