0

次の形式の文字列を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のオブジェクトの配列を作成するにはどうすればよいのでしょうか。

誰かが私を助けることができますか?

前もって感謝します :)

4

2 に答える 2

4

これを行う:

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

これにより、JSONがオブジェクトのNSArrayに配置されます。これらの各オブジェクトはNSDictionaryです。したがって、それぞれのNSDictionaryを取得するには、NSArrayをループする必要があります。

//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は、NSDictionaryのキーとしてJSONプロパティを保持します。

 NSString *address = [NSString stringWithString:[dict objectForKey:@"Address"]];
于 2012-07-04T16:18:44.017 に答える
1

パフォーマンスを向上させるために、JSONを読み取るときにマルチスレッドを使用することもお勧めします。 この記事は、ハウツーに従うのが非常に簡単です。読むことをお勧めします。

于 2012-07-04T18:59:54.397 に答える