Objective c 解析JSON数据目标C时出错

Objective c 解析JSON数据目标C时出错,objective-c,json,Objective C,Json,我正在尝试同步数据,在数据同步后,我从服务器收到一条消息。现在我想显示这个消息。但我在解析它时出错了。下面是我的代码 - (void)connection:(NSURLConnection *)connection didReceiveData:data{ NSLog(@"ConnectionDidReceiveData"); NSString *strdata=[[NSString alloc]initWithData:data encoding:NSASCIIStringEnc

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

- (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);
    }
 }
}
请帮忙

现在同样的代码也适用于这个JSON,有什么问题吗?我的res变量为空

  {"synchData":{"message":"DCR Sync successful","code":1,"date":"2013-11-24"}}
第一步 请使用 您的JSON似乎无效

步骤2 打印同步消息

nslog(@"syncMessage:%@",syncMessage);

代码解析中存在问题。
这是您的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

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

这将足以获得响应

显示您的json响应
[\uu NSCFString objectForKey:][/code>此代码表明响应是字符串而不是字典,这是我编辑的错误qustion@Dilip,我看到了,但当我把它当作普通字符串时,它告诉我这是一个NSDictionary。你能显示
res
strdata
syncMessage
的日志吗。。。你的方法奏效了。到底出了什么问题?正如我告诉过你的,你正在将dictionary对象赋给数组。我刚把它改成字典。@凯恩:怎么会是一本?queston只有一个直接答案,谁写的正确答案都是一样的。而且不需要复制这样一个简单的直接答案。答案是一样的,dilip已经在你回答之前3分钟给出了答案。只是说冷静点,不要否决投票你的答案。@Kane我写这个答案的时候它不在那里。请建议一种“不同的方式”来写这个答案。
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"]);
NSDictionary *returnDataDict = [res objectForKey:@"synchData"];
NSLog(@"result = %@",[returnDataDict objectForKey:@"message"]);