【问题标题】:Using Objective-c to parse information from JSON url使用 Objective-c 从 JSON url 解析信息
【发布时间】:2013-11-18 22:20:26
【问题描述】:

我正在尝试编写一段使用 reddits JSON 格式的代码。我打算访问 url:http://www.reddit.com/r/pics/new/.json,搜索字符串:“title”:“并将从那里到下一个撇号”的所有内容写入日志,继续直到所有标题都写入日志。

到目前为止,我有这个,但我没有得到任何日志输出。有人可以帮帮我吗?

- (void)viewDidLoad
{
    NSString *redditString = @"http://www.reddit.com/r/pics/new/.json";
    NSURL *redditURL = [NSURL URLWithString:redditString];
    NSError *error;
    NSCharacterSet *commaSet;
    NSScanner *theScanner;
    NSMutableString *jsonText = [[NSMutableString alloc] init];
    NSString *TITLE = @"\"title\": \"";
    NSString *postTitle;
    commaSet = [NSCharacterSet characterSetWithCharactersInString:@"\""];
    theScanner = [NSScanner scannerWithString:jsonText];
    [jsonText appendString:[NSString stringWithContentsOfURL:redditURL encoding:NSASCIIStringEncoding error:&error]];
    if ([theScanner scanString:TITLE intoString:NULL] && [theScanner scanUpToCharactersFromSet:commaSet intoString:&postTitle] && [theScanner scanString:@"\"" intoString:NULL]) {
             NSLog(@"%@", postTitle);
    }
}

哦,这一切都没有错误地构建,但这并不奇怪。

非常感谢您的帮助、所有提示、更正或任何其他非常感谢的事情。

【问题讨论】:

  • NSScanner 不适合这项工作。看看 NSJSONSerialization 吧。
  • @GabrielePetronella,这让生活变得更加轻松,谢谢。

标签: objective-c json nsstring nsscanner


【解决方案1】:

NSScanner 是错误的工作工具。您最好使用 JSON(反)序列化器,例如 NSJSONSerialization

为了让您的生活更轻松,您可以利用AFNetworking,这是一个支持 JSON 请求的网络框架。您的代码会简化为

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://www.reddit.com/r/pics/new/.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSArray *entries = responseObject[@"data"][@"children"];
    for (NSDictionary *entry in entries) {
        NSLog(@"%@", entry[@"title"]);
    }
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多