ios - iOS 6 中的 JSON 解析问题

标签 ios json parsing

我正在尝试从 json 中解析一些值。我设法获得 results.geometry.location 的值。如果参数失败,服务器返回一个值为 2 的 json。结果为空 [],状态为“一些错误”。

    url = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=false",postalCode];

NSData *jsonDataString = [[NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error: nil] dataUsingEncoding:NSUTF8StringEncoding];


NSArray* myResults = [NSJSONSerialization JSONObjectWithData:jsonDataString options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:&error];

latLon =[myResults valueForKeyPath:@"results.geometry.location"];

generalDict = (NSDictionary *)[latLon objectAtIndex:0];

NSLog(@"%@",[generalDict objectForKey:@"lat"]);

这很困惑。我试过:

latLon =[myResults valueForKeyPath:@""];

generalDict = (NSDictionary *)[latLon objectAtIndex:0];

NSLog(@"%@",[generalDict objectForKey:@"status"]); 

但是没有用。我怎样才能得到状态的值(value)。这是请求无效时的样子:

    {
   "results" : [],
   "status" : "ZERO_RESULTS"    
    }

最佳答案

myResults 是字典,不是数组。我想你想要这样的东西:

NSURL *url = [NSURL urlWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=false",postalCode];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[NSURLConnection sendAsynchronousRequest:request
                                   queue:[NSOperationQueue mainQueue]
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                           NSDictionary *jsonPayload = [NSJSONSerialization JSONObjectWithData:data
                                                            options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves
                                                              error:nil];
                           NSString *status = [jsonPayload objectForKey:@"status"];
                           //Check for error status
                           NSArray *resultsArray  = [jsonPayload objectForKey:@"results"];
                           //Do whatever you want with your results array
                       }];

关于ios - iOS 6 中的 JSON 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225226/

相关文章:

ios - 如何在ios中多次调用同一个服务并存储数据

ios - 在 swift 中从 json 数据中检索 Facebook 好友列表时遇到问题

ios - 无法在 Alamofire 4.0 中使用类型为 'append' 的参数列表调用 '(String, withName: String)'

java - Twitter4j - 转换为 JSON 的状态仅返回空值

java - 一种指定驱动任意对象解析和格式化的模式字符串的方法?

xml - 在 Delphi 中使用 XML(将特定数据返回给变量)

PHP XML 解析

ios - UIImageView 未在应用程序中显示

javascript - 从 JSON 指定 D3 图表中的值

javascript - 如何使用 ng-repeat 从嵌套 json 对象中检索数据