0

我是 iOS 开发的新手。我想要做的是解析 JSON 网络服务(请参阅下面的示例输出)。我想将上述输出绑定到 UITableView。您能否向我展示如何执行此操作的示例代码。我正在使用带有 4.3 sdk 的 Xcode 3。非常感谢你!

[{
    "event_id": "30",
    "bar_name": "Area 05 Superclub",
    "event_name": "test10",
    "date": "Dec 05, 2012 10:00 AM"
}, {
    "event_id": "27",
    "bar_name": "Area 05 Superclub",
    "event_name": "test7",
    "date": "Dec 02, 2012 10:00 AM"
}, {
    "event_id": "28",
    "bar_name": "Area 05 Superclub",
    "event_name": "test8",
    "date": "Dec 03, 2012 10:00 AM"
}, {
    "event_id": "29",
    "bar_name": "Area 05 Superclub",
    "event_name": "test9",
    "date": "Dec 04, 2012 10:00 AM"
}]

好的,伙计们,这是可能的初始代码,(请注意 Tim Stullich,谢谢!)。我能够从网络服务中提取数据。我的下一个问题是如何将它绑定到 UITableView。希望你能再次帮助我。

-(void)loadData{
    // Create new SBJSON parser object
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    // Prepare URL request to download statuses from Twitter
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http:xxx/gl_getEventsInformation.php"]];

    // Perform request and get JSON back as a NSData object
    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    // Get JSON as a NSString from NSData response
    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

    // parse the JSON response into an object
    // Here we're using NSArray since we're parsing an array of JSON status objects
    NSArray *statuses = [parser objectWithString:json_string error:nil];

    // Each element in statuses is a single status
    // represented as a NSDictionary
    for (NSDictionary *status in statuses)
    { NSLog(@"%@ - %@ - %@ - %@", [status objectForKey:@"event_id"],[status objectForKey:@"bar_name"],[status objectForKey:@"event_name"],[status objectForKey:@"date"]);}
}
4

3 回答 3

1

使用 IOS5,您可以使用 NSJSONSerialization 来解析 JSON。

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONWritingPrettyPrinted error:&error];

您可以执行以下操作从 Json Data 生成 NSArray。

   NSError *e = nil; NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];

    if (!jsonArray) 
       {   NSLog(@"Error parsing JSON: %@", e); } 
   else {    for(NSDictionary *item in jsonArray) 
         {
            NSLog(@"Item: %@", item);    
         }
       }

希望这可以帮助你

于 2012-07-31T08:53:23.900 回答
1

您可以使用诸如此 (TouchJSON) 之类的 json 库来将数据反序列化为可可对象。一个简单的工作流程是这样的:

#import "CJSONDeserializer.h"
...
NSString *jsonString = @"yourJSONHere";
NSData   *jsonData   = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError  *error      = nil;
NSArray  *jsonArray  = [[CJSONDeserializer deserializer] deserializeAsArray:jsonData error:&error];

PS。您还可以看到:https ://stackoverflow.com/questions/286087/best-json-library-to-use-when-developing-an-iphone-application它可能会帮助您确定最适合您的需求。

于 2012-07-31T09:42:53.093 回答
0

我要做的是检查这个链接。基本上,您需要将收到的数据解析为最好的 NSArray 或 NSMutableArray,然后实现 UITableView 使用的所需方法并从那里开始。如果您需要更多信息,请告诉我。

于 2012-07-31T08:38:03.313 回答