2014-07-10 3 views
0

나는 아래의 방법으로 서버의 응답을 받고 있습니다 :어떻게 IOS 응용 프로그램에서 JSON에서 값을 얻을 수

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

지금 내가하고 싶지 :

- (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 값을 가져가 문자열에서 특정 값, 예. 아래의 방법 등 : 키 "상태"를

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

별도의 NSDictionary를 초기화 할 필요가 없습니다. json을 캐스트하면 괜찮을 것입니다. 내가 JSON 직렬화를 사용하는 방법을 지정 crashes.please 내 응용 프로그램을 dataAsString 대신에 responsData을 사용하는 경우 – Enzo

+0

각하,이 responsData 무엇인지 말씀 해주십시오. 감사합니다 – bettermab9

+0

이 오류가 발생합니다 : - [__ NSCFString bytes] : 인식 자의 선택기가 인스턴스 0xa6ef9d0에 전송되었습니다. 2014-07-11 14 : 24 : 56.481 PicBackMefhbgerhb [2408 : 60b] *** 캐치되지 않은 예외로 인해 응용 프로그램 종료 중 'NSInvalidArgumentException' 이유는 : - : 그것은 문자열의 단지 쌍의 때문에, 당신은 당신을 위해 작동하는 경우, 다시 선생님을 – bettermab9

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