解析复杂的JSON(浏览它产生对象的层次结构)的目标C
问题描述:
我根据学校的菜单和菜品开发一个应用,在那里我坚持在解析复杂/嵌套JSON解析复杂的JSON(浏览它产生对象的层次结构)的目标C
样品的Json网址: Json Data
到目前为止,我刚做这为使用SBJSON在下面的代码中提到:
dispatch_async(dispatch_get_main_queue(),^ {
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
if (networkStatus == NotReachable) {
[self.view setUserInteractionEnabled:YES];
[HUD hideUIBlockingIndicator];
}
else
{
Url =[NSString stringWithFormat:@"http://private-e8e699-yumyummi.apiary-mock.com/districts/115/schools/43/menus/"];
checkData =[[NSMutableArray alloc]init];
URLRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[Url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:URLRequest returningResponse:&response error:&error];
NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
SBJsonParser* parser = [[SBJsonParser alloc] init];
NSError *jsonError;
if(jsonError == nil)
{
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
NSLog(@"%@",json);
NSDictionary *data = [json objectForKey:@"data"];
}
});
答
如果你的问题是,ÿ OU不知道数据的确切结构,你的JSON,您可以使用类似:
if([json isKindOfClass:[NSDictionnary class]) {
// actions for a dictionnary
id branch = json[@"your key"];
} else if([json isKindOfClass:[NSArray class]) {
// actions for an array
id branch = json[index];
}
还行if(jsonError == nil)
没有任何意义,你做前人的精力[NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
后做好这一点你似乎已经完成了解析。我期望的是,你所坚持的是导航它产生的对象的层次结构。 – trojanfoe
我不明白你的问题,你能更清楚你解析/遍历这个json对象时面临的问题吗? –
究竟@trojanfoe我被困在导航对象的层次结构 –