1

サーバーから受信した 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"];

// NSArray *keys = [usersList allKeys];と書くと、これは本当の NSDictionary ではないと思います。実行がクラッシュする

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

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

usersList に格納されている json データの構造は次のとおりです。

(
{

  createTime = "date hour";

  fullname = "user name";

  "prof_id" = number;

   thumb = "image.jpg";

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

そして、各ユーザーのデータを格納するクラスを作成し、特定の用途で使用したい場合は「prof_id」を使用したいと考えています。アプリにはすべてのユーザー(テーブルビューではない)のリストが必要なため、これが必要です。これが最も簡単な方法だと思います。

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

4

3 に答える 3

4

JsonKit Frameworkを使用して、Webサービスから受信したjsonデータを解析してください。

データを読み取り、JSONKitを使用して解析します。

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

その後、forループを使用してjson変数を反復処理する必要があります。
NSObjectクラスから継承された名前User(file-> new-> file)で新しいクラスを作成し、.h / .mファイルに必要なパラメーターを作成します(属性のゲッター/セッターを生成するために合成します)

接続クラスに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);
于 2012-05-07T10:08:35.280 に答える
1

私が間違っていなければ、あなたがする必要がある唯一のことは:

NSMutableArray *yourArray = usersList;

そして、次のような for ループで

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

そのようにprof_idを取得できます。

これが役立つことを願っています...

于 2012-05-07T09:51:31.510 に答える
1

JSON フレームワークを使用し、以下のコードを使用してデータを解析します。

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);

応答配列を使用して結果を表示します。

于 2012-05-07T10:30:58.450 に答える