2011-12-31 4 views
2

J'utilise la nouvelle fonction iOS 5 pour analyser JSON et je ne sais pas pourquoi je ne reçois aucune paire de valeur clé. "aStr" (représentation de chaîne de données) met le bon JSON sur la fenêtre de sortie mais je ne reçois rien dans "dicData" et il n'y a pas d'erreur non plus.NSJSONSerialization ne crée pas de paires valeur/clé

Toute aide est grandement appréciée.

C'est ce que je suis en utilisant

NSError *error = nil; 
    NSData *data = [NSData dataWithContentsOfURL:[NSURL  URLWithString:@"http://www.macscandal.com/?json=get_post&post_id=436"]]; 

NSString* aStr; 
aStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 

//NSLog(@"data = %@",aStr); 
NSDictionary *dicData = [NSJSONSerialization 
          JSONObjectWithData:data 
          options:NSJSONReadingAllowFragments 
          error:&error]; 
//NSLog(@"error = %@",error); 
NSString *title = [dicData objectForKey:@"title"]; 

Répondre

1

Votre JSON est formaté ainsi:

{ 
    "status": "ok", 
    "post": { 
    "id": 436, 
    "type": "post", 
    "slug": "foxconn-likely-to-get-assembly-contract-for-apple-tv-set", 
    "url": "http:\/\/www.macscandal.com\/index.php\/2011\/12\/28\/foxconn-likely-to-get-assembly-contract-for-apple-tv-set\/", 
    "status": "publish", 
    "title": "Foxconn Likely to get Assembly Contract for Apple TV Set", 
... 

Je ne l'ai pas utilisé NSJSONSerialization mais juste après la JSON naturelle analyse syntaxique alg c'est ainsi que je essaie de l'obtenir.

NSDictionary *dicData = [NSJSONSerialization 
          JSONObjectWithData:data 
          options:NSJSONReadingAllowFragments 
          error:&error]; 

NSDictionary *postData = [dicData objectForKey:@"post"]; 
NSString *title = [postData objectForKey:@"title"]; 

EDIT

Juste une méthode simple de contrôle:

-(void)check{ 

    NSError *error = nil; 
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.macscandal.com/?json=get_post&post_id=436"]]; 

    NSDictionary *dicData = [NSJSONSerialization 
          JSONObjectWithData:data 
          options:NSJSONReadingAllowFragments 
          error:&error]; 

    NSDictionary *postData = [dicData objectForKey:@"post"]; 
    NSString *title = [postData objectForKey:@"title"]; 

    NSLog(@"%@", title); 
} 
+0

Merci pour la réponse Cyprian mais je reçois toujours 0 paires clé/valeur? Une idée? – Leo

+0

Je ne sais pas pourquoi c'est le cas. Je vais essayer de le vérifier. – Cyprian

+0

Je viens de l'essayer et cela a fonctionné pour moi: '2011-12-31 20: 42: 04.595 UIView Demo [2406: f803] Foxconn susceptible d'obtenir le contrat d'assemblage pour Apple TV Set' – Cyprian