解析JSON数据目标C时出错

勒克斯

我正在尝试同步数据,并且在同步数据后,我从服务器收到一条消息。现在,我想显示此消息。但是解析时出现错误。下面是我的代码。

- (void)connection:(NSURLConnection *)connection didReceiveData:data{
   NSLog(@"ConnectionDidReceiveData");

   NSString *strdata=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];

   NSLog(@"Data as received =%@",strdata);

   if(strdata.length>2)
   {
       SBJSON *jsonparser=[[[SBJSON alloc]init]autorelease];
       NSDictionary *res= [jsonparser objectWithString:strdata];
       NSLog(@"res = %@",res);
       NSArray *syncMessage = [res objectForKey:@"synchData"];
       NSLog(@"syncMessage = %@",syncMessage);

     //  NSDictionary *dict = [syncMessage objectAtIndex:2];
     // NSLog(@"message = %@",[dict objectForKey:@"message"]);

    for (NSDictionary *result in syncMessage) {
        NSLog(@"result = %@",[result objectForKey:@"message"]); **<---- Error Occurs Here.**
       // NSString *message = [result objectForKey:@"message"];
        //NSLog(@"Message=%@",message);
    }
 }
}

错误 :

-[__ NSCFString objectForKey:]:无法识别的选择器已发送到实例0x93e9880 
2013-11-26 10:43:07.723 M [608:11903] ***由于未捕获的异常'NSInvalidArgumentException'而终止了应用程序,原因:'-[__ NSCFString objectForKey: ]:无法识别的选择器已发送到实例0x93e9880'

JSON响应...

syncMessage = {
   code = 0;
   fromdate = "-0-";
   message = "You have exceeded your leave count";
   todate = "-0-";
}

请帮忙。

现在,相同的代码适用于该JSON,这可能是什么问题?我的res变量为空。

  {"synchData":{"message":"DCR Sync successful","code":1,"date":"2013-11-24"}}
迪利普

问题出在代码解析中。
这是您的JSON数据

{ 
 synchData = { 
               code = 0; 
               fromdate = "-0-"; 
               message = "You have exceeded your leave count"; 
               todate = "-0-"; 
             };
} 

synchData不是数组,而是它的字典,而您正在将字典设置为数组,这就是问题所在。

所以我认为问题出在此代码之后

NSArray *syncMessage = [res objectForKey:@"synchData"];
       NSLog(@"syncMessage = %@",syncMessage);

     //  NSDictionary *dict = [syncMessage objectAtIndex:2];
     // NSLog(@"message = %@",[dict objectForKey:@"message"]);

    for (NSDictionary *result in syncMessage) {

        NSLog(@"result = %@",[result objectForKey:@"message"]); **<---- Error Occurs Here.**
       // NSString *message = [result objectForKey:@"message"];

        //NSLog(@"Message=%@",message);

    }
 }

像这样做

    NSDictionary *syncMessage = [res objectForKey:@"synchData"];
    NSLog(@"result = %@",[syncMessage objectForKey:@"message"]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章