【问题标题】:Error in connectionDidFinishLoading that I can resolve我可以解决的 connectionDidFinishLoading 错误
【发布时间】:2012-10-30 02:40:30
【问题描述】:

我有一个简单的 JSON 数组,它是从传递给第三方服务的邮政编码返回的。

http://api.geonames.org/findNearbyPostalCodes?postalcode=94115&country=US&radius=5&username=frequentz

尝试反序列化结果时出现未知错误,我不确定出了什么问题。

这是我的 connectionDidFinishLoading 方法,它按预期触发但总是失败......我在最后一个 else if 中得到错误。想法?

-(void) connectionDidFinishLoading:(NSURLConnection *)connection {

NSLog(@"connectionDidFinishLoading...");

self.zipCodes = [NSMutableArray array];

NSError *error = nil;

id jsonObject = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingAllowFragments error:&error];

if (jsonObject != nil && error == nil) {

    NSLog(@"Successfully deserialized...");

    if ([jsonObject isKindOfClass:[NSDictionary class]]) {

        NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;
        NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary);

        for (NSDictionary *item in jsonObject) {

          NSString *city = [item objectForKey:@"adminName2"];
          NSString *stateAbbreviation = [item objectForKey:@"adminCode1"];
          NSString *postalCode = [item objectForKey:@"postalCode"];
          NSString *distance = [item objectForKey:@"distance"];
          NSString *country = [item objectForKey:@"country"];
          NSString *stateName = [item objectForKey:@"stateName"];

          ZipCodes *zipCode = [[ZipCodes alloc] initWithName:city stateAbbrev:stateAbbreviation postalCode:postalCode distanceFromGPSZip:distance country:country stateFullName:stateName];

          [self.zipCodes addObject:zipCode];
        }
    }
    else if ([jsonObject isKindOfClass:[NSArray class]]){
        NSArray *deserializedArray = (NSArray *)jsonObject;
        NSLog(@"Deserialized JSON Array = %@", deserializedArray);
    }
    else {
        /* Some other object was returned. We don't know how to deal
         with this situation as the deserializer returns only dictionaries or arrays */
    }
}
else if (error != nil){
    NSLog(@"An error happened while deserializing the JSON data.");
}
}

【问题讨论】:

  • 你能不能做一个NSLog,看看jsonObject存储了什么信息?

标签: ios json nsdictionary nsjsonserialization nsmutabledata


【解决方案1】:

我认为您使用了错误的服务——它应该是 ...findNearbyPostalCodesJSON...。据我从他们的网站上可以看出,要使用 JSON 服务。这是他们的示例网址:

http://api.geonames.org/findNearbyPostalCodesJSON?postalcode=8775&country=CH&radius=10&username=demo

【讨论】:

  • @yeestyerbunny,jsonObject 为空,我还记录了长度,它为零,但我的 url 正是我想要的。嗯……
  • Ric,我先试过那个。一样的区别。顺便说一句,我有一些好消息要告诉你......
猜你喜欢
  • 2021-03-08
  • 2021-07-10
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2019-09-23
相关资源
最近更新 更多