2012-07-04 3 views
0

У меня есть PHP Webservice, который возвращает JSON строку с этим форматом:Как создавать объекты из JSON NSDictionary

[{"latitud":"37.995914","longitud":"-1.139705","nombre":"Miguel de 
Unamuno"},{"latitud":"37.995433","longitud":"-1.140143","nombre":"Calle 
Pina"},{"latitud":"37.99499","longitud":"-1.140361","nombre":"Calle 
Moncayo"},{"latitud":"37.993918","longitud":"-1.139392","nombre":"Calle 
Moncayo2"},{"latitud":"37.994588","longitud":"-1.138543","nombre":"Calle 
Salvador de Madriaga"}] 

В моем проекте, у меня есть пользовательский класс со следующей структурой:

#import <Foundation/Foundation.h> 
#import <MapKit/MapKit.h> 

@interface PCoordenada : NSObject 

@property (nonatomic) CLLocationCoordinate2D *punto; 
@property (nonatomic,strong) NSString *nombre; 
@end 

Затем I'm, используя другой класс для основного приложения:

#import <UIKit/UIKit.h> 
#import "PCoordenada.h" 

@interface TestViewController : UIViewController 

@property (nonatomic,strong) NSData * HTTPResponse; 
@property (nonatomic,strong) NSDictionary * dic; 
@property (nonatomic,strong) NSMutableArray *arrayCoord; 
@property (nonatomic,strong) PCoordenada *coor; 

-(IBAction)GetDataFrom:(id)sender; 

@end 

Интересно как я могу создать массив объектов PCoordenada, содержащих информацию о строке JSON.

Любой может мне помочь?

Заранее спасибо :)

+0

Возможный дубликат [Поддержка родного JSON в iOS?] (Http://stackoverflow.com/questions/3562478/native-json-support-in-ios) – Monolo

ответ

4

ли это:

NSData *theData = [NSData dataWithContentsOfURL:[NSURL URLWithString:YOUR_URL]]; 
NSArray *arrRequests = [NSJSONSerialization JSONObjectWithData:theData options:NSJSONReadingMutableContainers error:nil]; 

который поместит JSON в NSArray объектов. Каждый из этих объектов является NSDictionary. Итак, вам просто нужно пройти через NSArray, чтобы вытащить NSDictionary каждого из них.

//now let's loop through the array and generate the necessary annotation views 
for (int i = 0; i<= arrRequests.count - 1; i++) { 
    //now let's dig out each and every json object 
    NSDictionary *dict = [arrRequests objectAtIndex:i];} 

Каждый NSDictionary, что вы получите от цикла имеет свойства JSON в качестве ключа в NSDictionary:

NSString *address = [NSString stringWithString:[dict objectForKey:@"Address"]]; 
+0

Ницца! Это решает мою проблему без лишних проблем. Благодаря!! – miguelmsa1

1

Это также хорошая практика, чтобы использовать многопоточность при чтении JSON для более высокой производительности. This статья имеет очень простую последовательность действий. Я рекомендую прочитать.

Смежные вопросы