如何从JSON NSDictionary创建对象

时间:2012-07-04 16:09:46

标签: ios json cocoa object nsdictionary

我有一个PHP Web服务,它返回一个JSON字符串,格式为:

[{"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

然后,我在主应用程序中使用其他类:

#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

我想知道如何制作一个包含JSON字符串信息的PCoordenada对象数组。

有人可以帮助我吗?

提前致谢:)

2 个答案:

答案 0 :(得分: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"]];

答案 1 :(得分:1)

在阅读JSON时使用多线程以获得更好的性能也是一种很好的做法。 This文章有一个非常简单的关注方法。我推荐阅读。