繁体   English   中英

使用json数据

[英]working with json data

我有以下代码来解析从服务器接收到的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),我认为这是最简单的方法。

有人能帮我吗? 谢谢!!

请使用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文件中创建所需的参数。(进行合成以生成属性的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);

如果我没记错的话,您唯一需要做的就是:

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。

我希望这有帮助...

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

使用响应数组显示结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM