目标c -如何解析JSON数据和显示内容在iphone应用程序



我想知道进入数组的对象如何在对象中存储它们就像当我使用

myArray.id=
myArray.name=
所以它应该显示值
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];

这里有一个关于如何解析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"]);

在从json中调用数据时,您必须注意一些事情,但这很容易。首先,您应该在m-file的顶部添加这两行:

#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);
}

有关更多详细信息,请使用results

NSDictionary *specificData = [results objectAtIndex:0];

,应该这样做。

我只是用最短的方式解释了它,如果你想知道所有的事实,看看下面的教程。但我不确定是否支持使用<iOS5。在知道之前我不能测试它。如果你需要这样的东西,也许你可以看看Git上的JSONKit。也许有人知道这些细节,我也会感兴趣的。>

JSONKit使这很容易,可能值得考虑。

json框架是可行的。

但是,这个JSON是无效的。告诉提供API的人确保他们的JSON返回是有效的。

最新更新