2013-01-09 26 views
2

請原諒我最終的錯誤,我可以問這個問題,這是我第一次在這裏。NSJSONSerialization中沒有退貨

本網站上閱讀幾個主題之後,like this one首先我會嘗試使用描述方法,但它仍然無法正常工作@所有:-(

我以.json文件看起來像這樣

{ "speakers" : 
    [ 
    { 
    "name":"Value", 
    "picture": "URL VALUE", 
    "business":"VALUE", 
    "desc":"VALUE", 
    "twitter": "URL VALUE" 
    }     
    { 
      ... 

    } 
    ] 
} 

所以這是我的推理:

我首先是 字典包含 揚聲器屬性
這一個包含 數組,字段由一些 字典「名稱」,「業務」,... attr。

所以,這是我的OBJ-C代碼:

NSString *URLStr = @"URLofMyJsonFile"; 

NSURLRequest *JSONRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithString:URLStr ]]]; 

NSData *JSONData = [NSURLConnection sendSynchronousRequest:JSONRequest returningResponse:nil error:nil]; 

NSError *parsingError = nil; 

NSDictionary *speakerDictionnary = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:&parsingError]; 

NSArray *speakersArray = [speakerDictionnary objectForKey:@"news"]; 

for (NSDictionary *oneSpeaker in speakersArray) { 
    NSLog(@"The speakers's name is %@", [oneSpeaker objectForKey:@"name"]); 
    NSLog(@"The speakers's business is %@", [oneSpeaker objectForKey:@"business"]); 
    NSLog(@"The speakers's desc is %@", [oneSpeaker objectForKey:@"desc"]); 
} 

編輯:我remplace我的腳本的正確網址與虛擬

回答

3

您的JSON是無效的,需要有之間的逗號個人發言者字典。

{ "speakers" : 
    [ 
    { 
     "name":"Value", 
     "picture": "URL VALUE", 
     "business":"VALUE", 
     "desc":"VALUE", 
     "twitter": "URL VALUE" 
    } <=== MISSING COMMA HERE  
    { 
     ... 
    } 
    ] 
} 
+0

謝謝,我到處搜索,希望在我的json文件中... –

0

正如omz提到的json是錯誤的。你可以嘗試下面的代碼:

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.appios.fr/client/takeoff/app/script/jsonSpeaker.json"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *reponse,NSData *data,NSError *error){ 
     if (!error) { 
      NSError *jsonError; 
      id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError]; 
      NSArray *speakersList = [json objectForKey:@"speakers"]; 
      [speakersList enumerateObjectsUsingBlock:^(NSDictionary *dict,NSUInteger idx,BOOL *Stop){ 
       NSLog(@"Name : %@",[dict objectForKey:@"name"]); 
      }]; 
     } 

    } ];