2011-07-25 77 views
0
SBJsonParser *parser = [[SBJsonParser alloc] init]; 

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.krsconnect.no/community/api.html?method=bareListEventsByCategory&appid=620&category-selected=350&counties-selected=Vest-Agder,Aust-Agder"]]; 
    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
    NSDictionary *object = [parser objectWithString:json_string error:nil]; 
    NSArray *results = [parser objectWithString:json_string error:nil]; 

    NSDictionary *dictOne = [results objectAtIndex:0]; 

    appDelegate.books = [[NSMutableArray alloc] init]; 

    NSArray *activitiesArray = [dictOne objectForKey:@"events"]; 



    NSDictionary *dictTwo = [activitiesArray objectAtIndex:0]; 

    NSArray *eventArray=[dictTwo objectForKey:@"event"]; 
    NSDictionary *dictThree=[eventArray objectAtIndex:0]; 



// NSLog(@"%@ - %@", [dictOne objectForKey:@"date"]); 

// NSLog(@"%@ - %@", [dictTwo objectForKey:@"affectedDate"]); 


    NSString*date=[dictOne objectForKey:@"date"]; 

    NSLog(@"%@ - %@", [dictTwo objectForKey:@"affectedDate"]); 
    NSLog(@"%@ - %@", [dictThree objectForKey:@"title"]); 
    NSLog(@"%@ - %@", [dictThree objectForKey:@"location"]); 
    NSLog(@"%@ - %@", [dictThree objectForKey:@"municipality"]); 

当我的NSLog(职称)的位置,直辖市它显示零值解析JSON数据没有显示正确的值

JSON:

[ 
    { 
    "date": 1311552000000, 
    "events": [ 
     { 
     "affectedDate": 1311552000000, 
     "event": { 
      "appId": 42, 
      "eventId": 18095, 
      "location": "Sjølingstad Uldvarefabrik", 
      "municipality": "Lindesnes", 
      "title": "Utstillingsåpning - romfisk" 
     } 
     }, 
     { 
     "affectedDate": 1311552000000, 
     "event": { 
      "appId": 42, 
      "eventId": 18095, 
      "location": "Sjølingstad Uldvarefabrik", 
      "municipality": "Lindesnes", 
      "title": "Utstillingsåpning - romfisk" 
     } 
     }, 
     { 
     "affectedDate": 1311580800000, 
     "event": { 
      "appId": 620, 
      "eventId": 19490, 
      "location": "Høvåg Gjestehus, Vestre Vallesverd, Høvåg", 
      "municipality": "Lillesand", 
      "title": "Kunstutstilling på Høvåg Gjestehus" 
     } 
     }, 
... 
] 

继普利文答案我已经试过这个代码,但它仍然是不工作:

NSDictionary *dictOne = [results objectAtIndex:0]; 
NSArray *activitiesArray = [dictOne objectForKey:@"events"]; 
NSDictionary *dictTwo = [activitiesArray objectAtIndex:1]; 
NSArray *eventArray=[dictTwo objectForKey:@"event"]; 
NSDictionary *dictThree=[eventArray objectAtIndex:2]; 
+0

PLS,提供json,所以我们知道它的结构。 – Cyprian

+0

http://www.krsconnect.no/community/api.html?method=bareListEventsByCategory&appid=620&category-selected=350&counties-selected=Vest-Agder,Aust-Agder – Ali

+0

这是我正在使用的json数据 – Ali

回答

0
  1. 你不需要初始化解析器,B/C SBJSON使用的NSString类别添加其它解析方法对标准的NSString称为JSONValue返回一个NSStringNSDictionary表示。

获得NSDictionary后,将其转换为NSArray像这样NSArray * values = [dictionary allValues];然后使用方法[values objectForKey:@"date"]获取日期等。

+0

我使用这样的,你已经看到代码的showign日期affecteddate但不显示其他值 – Ali

+0

你能说清楚的代码我没有得到 – Ali

0

其嵌套JSON。值的解析和检索是不同的。一旦你的字典中值的嵌套对象,你需要深入挖掘它获得下值。

  1. 从主阵列的getObject事件。
  2. 从上面的解释
  3. 事件从在步骤2中返回的字典,您可以访问的appid,EVENTID等获取对象

所以基本上你的代码应该是

NSDictionary *dictTwo = [activitiesArray objectAtIndex:1]; // Or get object for key events