Desenvolvimento

25 jul, 2012

Trabalhando com JSON em aplicações iPhone

Publicidade

Neste artigo iremos ver como trabalhar com JSON (JavaScript Object Notation) no Objective-C. O JSON nada mais é do que uma coleção de chave/ valor. Nele podemos ter um objeto, ou um array de objetos.
Em nosso exemplo, iremos acessar uma url via HTTP que retorne um objeto JSON, e então, exibiremos os valores coletados para o usuário.

Configurando o JSON no Xcode

Infelizmente, o JSON não é nativo no Objective-C, então para isso a primeira coisa que devemos fazer é baixar a biblioteca aqui. No Xcode, crie um novo projeto do tipo View-Based-Application e dê o nome de JsonExemplo. Feito o download, arraste a pasta JSON para dentro do seu projeto no Xcode.

Consumindo o WebService

Com as devidas configurações feitas, vamos implementar o nosso código. No arquivo JSonExemploViewController.h declarei as seguintes propriedades e métodos:

    #import <UIKit/UIKit.h>

@interface JsonExemploViewController : UIViewController
{
IBOutlet UILabel *lblTitulo;
IBOutlet UILabel *lblUrl;
}

@property (nonatomic, retain) UILabel *lblTitulo;
@property (nonatomic, retain) UILabel *lblUrl;

-(NSString *)stringWithUrl:(NSURL *)url;
- (id) objectWithUrl:(NSURL *)url;

@end

No arquivo JsonExemploViewController.m, façamos o seguinte:

  • Import do JSON
    (#import “JSON.h”)
  • Declare o Synthesize para os 2 labels criado acima
    (@synthesize lblTitulo, lblUrl)
  • Implemente os dois métodos (stringWithUrl e objectWithUrl):
    - (NSString *)stringWithUrl:(NSURL *)url{

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:30];

NSData *urlData;
NSURLResponse *response;
NSError *error;

urlData = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];

return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
}
    - (id) objectWithUrl:(NSURL *)url{
SBJsonParser *jsonParser = [SBJsonParser new];
NSString *jsonString = [self stringWithUrl:url];

return [jsonParser objectWithString:jsonString error:NULL];
}

Em seguida adicionamos o seguinte bloco de código no método viewDidLoad:

    - (void)viewDidLoad{
[super viewDidLoad];

id response = [self objectWithUrl:[NSURL URLWithString:@"http://jaiku.com/feed/json"]];

NSDictionary *retorno= (NSDictionary *)response;

lblTitulo.text = [retorno valueForKey:@"title"];
lblUrl.text = [retorno valueForKey:@"url"];
}

Para finalizar, basta apenas criar dois labels no arquivo JsonExemploViewController.xib e fazer as suas devidas conexões no File’s Owner.

Resultado final

(O endereço de retorno do Json está disponível na internet e foi retirado deste site)