在parsing数据时发生iOS错误
在我的应用程序中,我使用JSONparsing数据
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];
这段代码执行后,在我的日志中打印为
({ latitude = "0.000000000000000"; longitude = "0.000000000000000"; username = sunil; }, { latitude = "80.000000000000000"; longitude = "30.000000000000000"; username = arun; })
但是,运行时,应用程序崩溃,如
'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x910d8d0'
我认为你的问题是,该jsonParser objectWithString
返回一个数组与字典本身不是字典本身。
尝试以下操作:
NSArray *jsonData = (NSArray *) [jsonParser objectWithString:outputData error:nil]; for(NSDictionary *dict in jsonData) { NSLog(@"%@",dict); }
那对你有用吗 ?
你的响应是包含NSDictionary
NSArray
。 所以先从数组中获取字典然后访问值。 另外你的json
看起来不正确。
for (NSDictionary *dict in responseArray) { double latitude = [dict[@"latitude"]doubleValue]; double longitude = [dict[@"latitude"] longitude]; NSString* name = dict[@"username"]; }
1.首先你得到JSON中的NSArray
JSON以“(”表示NSArray
JSON以“{”表示NSDictionary开头
在这里你得到NSArray其中有NSDictionary的集合,
{ latitude = "0.000000000000000"; longitude = "0.000000000000000"; username = sunil; },...
2.“成功”键不存在于JSON中。
-
固定
NSArray *jsonData = (NSArray *) [jsonParser objectWithString:outputData error:nil]; If([jsonData count]>0){ // Has some data // Iterate NSDictionary and get data here } else{ // No Data }
一些你使用某个对象键从nsarray获取数据的地方。 该键对从数组中提取数据无效