2012-05-07 19 views
1

私は、サーバーから受信したJSONデータ解析するフォローコードがあります。JSONデータを扱う

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { 

NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; 
NSArray *array_webdata=[[NSArray array] init]; 

NSString *searchStatus = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];  

array_webdata = [parsedata objectWithString:searchStatus error:nil]; 

NSDictionary *usersList = [array_webdata valueForKey:@"results"]; 

//私はそれが本当のNSDictionaryのはないと思うのため、私はにNSArrayを書く場合は*キー= [USERSLIST allKeys ];

(
{ 

    createTime = "date hour"; 

    fullname = "user name"; 

    "prof_id" = number; 

    thumb = "image.jpg"; 

}, 
{ 
     data of rest of users... 
} 
) 

そして私は、私が欲しい時に、各ユーザのデータを保存し、「prof_id」を使用するクラスを作成したいと思います:実行は、以下の構造を有するUSERSLISTに保存されている

NSLog(@"\n usersList =\n %@ \n", usersList); 

[searchStatus release]; 
[connection release]; 
[webData release]; 
[pool drain];} 

JSONデータをクラッシュ特定の用途を使用する。 すべてのユーザー(テーブルビューではない)のリストが必要なので、これが必要です。これが最も簡単な方法だと思います。

誰かが私を助けることができますか?ありがとう!!

+0

NSArray * keys = [usersList allKeys];と書くと、なぜクラッシュするのですか? ???エラーメッセージ:[__NSArrayM allKeys]:インスタンスに送信された認識できないセレクタ0x6863270 –

答えて

4

してください私はこのことができます願ってい

は... Webサービスから受け取ったJSONデータを解析するJsonKitフレームワークを使用していました。

読み出しデータとJSONKitを使用して解析:その後

NSData* jsonData = [NSData dataWithData:webData]; 
JSONDecoder* decoder = [[JSONDecoder alloc] 
          initWithParseOptions:JKParseOptionNone]; 
NSArray* json = [decoder objectWithData:jsonData];

を、あなたはループのために使用してJSON変数を反復処理する必要があります。
.H/.mファイルで必要なパラメータを作成し、NSObjectクラスから継承された名前でUser(ファイル - >新規作成>ファイル)を新しいクラスを作成します。

インポート(属性のgetter/setterメソッドを生成するために合成します)あなたの接続クラスのUser.hを作成し、反復子ループでUserエンティティのオブジェクトを作成し、そのオブジェクトをグローバルスコープ配列に追加します。

for(NSDictionary *userInfo in json) { 
    User* user=[[User alloc] init]; 
    user.fullName=[userInfo valueForKey:@"fullname"]; 
    user.prof_id=[[userInfo valueForKey:@"prof_id"] integerValue]; 
    // Add into your global array 
    [usersList addObject:user]; 
    [user release];// if ARC is not enable 
} 
// Check for successful object creation 
NSLog(@"USER LIST contain User class Objects- %@",userList); 
+0

私はjsonデータの解析に問題はありません。私の問題は、このデータを格納するクラスを作成する方法を知らず、それを使用することです。 –

+0

更新されたanwserを確認してください。 –

+0

私はuser.hとuser.mにどのようなコードを入れるのか分かりません。 –

1

私は間違っていないよ場合はあなたがする必要がある唯一のものがある:

NSMutableArray *yourArray = usersList; 

、その後

for(int i = 0;i<[usersList count] ;i++) 
{ 
NSMutableDictionary *yourDictionary = [usersList objectAtIndex:i]; 
int prof_id = [yourDictionary valueForKey:@"prof_id"]; 
} 

のようなループのために、あなたはそのようなあなたのprof_idを得ることができます。

+0

float型のintデータ型ではなく、キー付きの**オブジェクト**のみをDictionaryに格納できます。 –

1

JSON Frameworkを使用し、以下のコードを使用してデータを解析します。

NSString* newStr = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"yout link to json file"] encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"new str - %@",newStr); 

NSArray *response = [newStr JSONValue]; 

NSLog(@"json array - %@",response); 

結果を表示するには、応答配列を使用します。

関連する問題