如何解析JSON数据并在iPhone应用程序中显示内容

时间:2011-07-07 05:41:02

标签: iphone objective-c json

我希望数组中的对象如何将它们存储在对象中,就像我使用时一样

myArray.id=
myArray.name=

所以它shuls显示值

SBJsonParser *parser = [[SBJsonParser alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.krsconnect.no/community/api.html?method=categories&appid=620&mainonly=true"]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *object = [parser objectWithString:json_string error:nil];
NSArray *results = [parser objectWithString:json_string error:nil];

4 个答案:

答案 0 :(得分:2)

Matt Gallagher here有一个关于如何解析JSON的精彩教程。希望能让你开始朝着正确的方向前进。

以下内容应显示您的代码/ JSON的结果:

// Get JSON as a NSString from NSData response
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *object = [parser objectWithString:json_string error:nil];

// the JSON response is an Array
NSArray *results = [parser objectWithString:json_string error:nil];
NSDictionary *dictOne = [results objectAtIndex:0];
NSArray *activitiesArray = [dictOne objectForKey:@"activities"];
NSDictionary *dictTwo = [activitiesArray objectAtIndex:0];
NSDictionary *eventDict = [dictTwo objectForKey:@"event"];

NSLog(@"%@ - %@", [eventDict objectForKey:@"category"]);

答案 1 :(得分:1)

从json调用数据时需要注意一些事情,但它很容易。首先,你应该在m文件的顶部添加这两行:

#define kAsyncModus dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
#define kYourJsonURL [NSURL URLWithString: @"_THE_JSON_URL_"]

然后,将以下部分插入到viewDidLoad方法中。 “dispatch_async”必须与之前定义的宏(在顶部)一起使用,因此您可以创建一个线程。否则,如果服务器没有响应,您的应用程序可能会崩溃,但方法仍在等待它。

// get elements of json
dispatch_async(kAsyncModus, ^{
    NSData *data = [NSData dataWithContentsOfURL: kYourJsonURL];
    [self performSelectorOnMainThread:@selector(fetchedData:)
                           withObject:data
                        waitUntilDone:YES];
});       

并创建一个新方法,从接收到的json中获取单个元素

- (void)fetchedData:(NSData *)responseData{
    NSError *error;
    NSDictionary *json =
    [NSJSONSerialization JSONObjectWithData:responseData
                                    options:kNilOptions
                                      error:&error];

    NSArray *results = [json objectForKey:@"_firstElementInJsonFile_"];


    NSLog(@"Results: %@", results);

}

了解更多详细信息,请使用结果

NSDictionary *specificData = [results objectAtIndex:0];

应该这样做。

我只是以最短的方式解释它,如果你想让所有的事实都看到tutorial。 但我不确定,是否支持旧设备使用< iOS5的。直到知道我才能测试它。如果你需要这样的东西,也许你可以在Git上看看JSONKit。也许有人知道这些细节,对我来说也很有趣。

答案 2 :(得分:0)

json-framework是要走的路。

但是,此JSON无效。告诉谁提供API以确保其JSON返回为valid

答案 3 :(得分:0)

JSONKit让这很容易,值得考虑。它非常快。