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"];

//我认为这不是真正的 NSDictionary,因为如果我写NSArray *keys = [usersList allKeys]; 执行崩溃

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”。我需要这个,因为该应用程序需要一个包含所有用户的列表(不是 tableview),我认为这是最简单的方法。

有人能帮我吗?谢谢!!

4

3 回答 3

4

请使用JsonKit框架解析从 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 文件中创建所需参数。(进行综合以生成属性的 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);
于 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 回答