0

iOS開発初心者です。私がやろうとしているのは、JSON Web サービスを解析することです (以下のサンプル出力を参照)。上記の出力を 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 の世話をします、ありがとう!)。Web サービスからデータを取得できました。私の次の問題は、それを 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

このようなjsonライブラリ(TouchJSON)を使用して、データをcocoaオブジェクトに逆シリアル化できます。単純なワークフローは次のようになります。

#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 に答える
1

IOS5 では、JSON の解析に NSJSONSerialization を使用できます。

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 に答える
0

私がすることは、このリンクをチェックすることです。基本的に必要なのは、受信したデータをできれば NSArray または NSMutableArray に解析し、UITableView で使用される必要なメソッドを実装してそこから移動することです。さらに情報が必要な場合はお知らせください。

于 2012-07-31T08:38:03.313 に答える