Main Contents

[Objective-c] JSON et iPhone

juillet 31, 2011

Après avoir vu les webservices en SOAP. J’ai testé le JSON. Pour ceux ne connaissant pas, c’est une autre façon de coder des informations pour les envoyer d’un endroit à un autre, plus de détails par la : http://fr.wikipedia.org/wiki/JSON
Au final c’est encore plus simple, d’autant plus qu’une librairie existe pour le parser.

On va faire un petit exemple pour que vous compreniez.

L’objectif est de récupérer les tweets et leurs informations qui sont sur cette page de Twitter :
http://twitter.com/statuses/public_timeline.json

Première chose il faut télécharger la librairie:
Edit: la nouvelle adresse puisque le projet est passé sur GitHub
https://github.com/stig/json-framework/

Ensuite créer un projet iPhone, par exemple un View-Based-Application et importer le dossier Classes qui est dans l’image téléchargée (cocher la case « copier les fichiers »). Vous y trouverez plusieurs versions de la librairie en fonction du type de logiciel que vous développez (iPhone, OS X etc.) et même le framework à rajouter à Xcode.

Ensuite rajoutez un :

1
#import "SBJson.h"

Et voilà un exemple de code :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Creation du parser
SBJsonParser *parser = [[SBJsonParser alloc] init];
 
// Construction de l'url à récupérer
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://twitter.com/statuses/public_timeline.json"]];
 
// execution de la requête et récupération du JSON via un objet NSData
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
 
// On récupère le JSON en NSString depuis la réponse
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
 
// on parse la reponse JSON
NSArray *statuses = [parser objectWithString:json_string error:nil];
 
for (NSDictionary *status in statuses)
{
  // on peut recuperer les valeurs en utilisant objectForKey à partir du status qui est un NSDictionary
  // on log le tweet et le nom de l utilisateur
  NSLog(@"%@ - %@", [status objectForKey:@"text"], [[status objectForKey:@"user"] objectForKey:@"screen_name"]);
}

On voit donc apparaitre dans les logs les informations et tout ça très simplement et en peu de lignes.

Catégorie(s): Développement, Iphone, Objective-C, Tutorial | Comments (11)

11 Comments