2014-07-10 43 views
0

我收到来自以下方法服务器响应:如何从JSON在iOS应用价值

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data{ 
    NSString * result; 
    NSMutableData * _responseData = [[NSMutableData alloc]init]; 
    [_responseData appendData:data]; 

    NSDictionary *dataAsString=(NSDictionary*)[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"data in register reponse : %@",dataAsString); 

我得到的日志此JSON值:

dataAsString : {"status":"error","message":"MySQL Error: 1062 : Duplicate entry '[email protected]' for key 'loginEmail'"} 

现在,我想来自字符串的特定值,例如对于关键的“状态”: 像下面的方法:

Nsstring * result=[dataAsString objectForKey:@"status"]; 
NSLog(@"result : %@",result); 

但我dodn't得到的结果和我的应用程序崩溃。我不知道那有什么问题。我尝试了很多方法,但没有成功。

请帮我一把。我如何从dataAsString检索价值。 谢谢你宝贵的时间。

回答

1
NSJSONSerialization *json; 
NSDictionary *dataJson; 
NSError *error; 

json=[NSJSONSerialization JSONObjectWithData:_responseData 
          options:NSJSONReadingMutableLeaves 
          error:&error]; 

dataJson=[[NSDictionary alloc]init]; 
dataJson=(NSDictionary *)json; 
NSString * result=[dataJson valueForKey:@"status"]; 

如果您有更多的麻烦,请参阅本linkthis

+0

你不需要分配init一个单独的NSDictionary,只是施放JSON,你会没事的。 – Enzo

+0

先生,请告诉我什么是此responsData,当我使用responsData代替dataAsString我的应用程序crashes.please指定如何使用json序列化。谢谢 – bettermab9

+0

我得到这个错误: - [__ NSCFString bytes]:无法识别的选择发送到实例0xa6ef9d0 2014-07-11 14:24:56.481 PicBackMefhbgerhb [2408:60b] ***由于未捕获的异常'NSInvalidArgumentException' ,原因:' - [__ NSCFString bytes]:无法识别的选择器发送到实例0xa6ef9d0' – bettermab9

0
NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:receiveddata options:0 error:&localError]; 
NSDictionary *result = [dataAsString objectForKey:@"result"]; 
NSString *statusString = [result objectForKey:@"status"];