iOS-error in parsing the data

爷,独闯天下 提交于 2019-12-13 08:52:07

问题


In my app, I am parsing the data using JSON

NSString * urlString=[NSString stringWithFormat:@"http://userRequest?userid=bala@gmail.com&latitude=59.34324&longitude=23.359257"];
NSURL * url=[NSURL URLWithString:urlString];
NSMutableURLRequest * request=[NSMutableURLRequest requestWithURL:url];
NSError * error;
NSURLResponse * response;
NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString * outputData=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@",outputData);

SBJsonParser *jsonParser = [SBJsonParser new];
NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:outputData error:nil];
NSLog(@"%@",jsonData);
NSInteger success = [(NSNumber *) [jsonData objectForKey:@"success"] integerValue];  

After this code executes, In my log it is printed as

({  
latitude = "0.000000000000000";  
longitude = "0.000000000000000";  
username = sunil;  
},  
{  
latitude = "80.000000000000000";  
longitude = "30.000000000000000";  
username = arun;  
})  

But while running, the app crashes, as

'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x910d8d0'

回答1:


I think your problem is, that jsonParser objectWithString returns an array with dictionaries in it not dictionaries itself.

Try the following:

NSArray *jsonData = (NSArray *) [jsonParser objectWithString:outputData error:nil];

for(NSDictionary *dict in jsonData) {
    NSLog(@"%@",dict);
}

Does that work for you ?




回答2:


Your reponse is NSArray which contains NSDictionary. So frst get dictionary from array then access value. Also Your json not look like correct.

for (NSDictionary *dict in responseArray) {
    double latitude = [dict[@"latitude"]doubleValue];
    double longitude = [dict[@"latitude"] longitude];
    NSString* name = dict[@"username"];
}



回答3:


1. First of all you are getting NSArray in JSON

JSON Starts with "(" means NSArray

JSON Starts with "{" means NSDictionary

Here you are getting NSArray which has collection of NSDictionary,

    {
        latitude = "0.000000000000000";
        longitude = "0.000000000000000";
        username = sunil;  
    },...

2."success" key is not present in the JSON..

  • Fix

    NSArray *jsonData = (NSArray *) [jsonParser objectWithString:outputData error:nil];
    
    If([jsonData count]>0){
    
        // Has some data
        // Iterate NSDictionary and get data here
    }
    else{
    
        // No Data
    }
    



回答4:


some where you are getting data from nsarray with using some object key. that key is invalid to fetching data from array



来源:https://stackoverflow.com/questions/20880074/ios-error-in-parsing-the-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!