2016-02-27 46 views
0

我根据学校的菜单和菜品开发一个应用,在那里我坚持在解析复杂/嵌套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"];    
    } 
}); 
+0

后做好这一点你似乎已经完成了解析。我期望的是,你所坚持的是导航它产生的对象的层次结构。 – trojanfoe

+0

我不明白你的问题,你能更清楚你解析/遍历这个json对象时面临的问题吗? –

+0

究竟@trojanfoe我被困在导航对象的层次结构 –

回答

0

如果你的问题是,ÿ 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];