2014-09-23 7 views
0

웹 서비스에서 JSON 응답을받은 후. 나는 웹 서비스iOS 7 : 연결 방식으로 NSDictionary를 사용하여 역 직렬화 한 후 JSON 응답 받기

{"d":"{\"Status\":0,\"Message\":\"Registered Successfully\",\"Token\":\"281fecff-2d44-4530-bc24-03558f1ebda1\",\"CurrentTimestamp\":\"23-09-2014 09:58:39 +05:30\",\"ValidUntilTimespan\":\"23-09-2014 09:58:39 +05:30\"}"} 

에서이 응답을 가지고 그리고 난 "D :"제거가 우선이 문자열을 역 직렬화가 분석을 위해 유효 JSON을하고 "\"를.

NSString *responseData = [[NSString alloc]initWithData:receivedData encoding:NSUTF8StringEncoding]; 
responseData = [responseData stringByReplacingOccurrencesOfString:@" " withString:@""]; 
responseData = [responseData stringByReplacingOccurrencesOfString:@"\\" withString:@""]; 
responseData = [responseData stringByReplacingOccurrencesOfString:@"\"d\":" withString:@""]; 
responseData = [responseData substringToIndex:[responseData length] - 2]; 
responseData = [responseData substringWithRange:NSMakeRange(2, [responseData length]-2)]; 

NSLog(@"Reponse data %@",responseData); 
NSData *jsonData = [responseData dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *errorJson=nil; 
NSDictionary *myDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&errorJson]; 
NSLog(@"Final %@",myDictionary); 

NSString *valueMessage = [myDictionary objectForKey:KeyMessage]; 
NSString *valueStatus = [myDictionary objectForKey:KeyStatus]; 
NSString *valueCurrentTimestamp = [myDictionary objectForKey:KeyCurrentTimestamp]; 
NSString *valueToken = [myDictionary objectForKey:KeyToken]; 
NSString *valueValidUntillTimepstamp = [myDictionary objectForKey:KeyValidUntillTimepstamp]; 
    //values 
NSLog(@"Message = %@",valueMessage); 
NSLog(@"Status = %@",valueStatus); 
NSLog(@"currenttimestamp= %@",valueCurrentTimestamp); 
NSLog(@"token= %@",valueToken); 
NSLog(@"validuntiltimespan= %@",valueValidUntillTimepstamp); 

이 내 로그 결과입니다

014-09-23 10:03:13.885 Sbits_Journal[1015:60b] Response data {"Status":0,"Message":"RegisteredSuccessfully","Token":"281fecff-2d44-4530-bc24-0 3558f1ebda1","CurrentTimestamp":"23-09-201409:58:39+05:30","ValidUntilTimespan":"23-09- 201409:58:39+05:30"} 
2014-09-23 10:03:13.886 Sbits_Journal[1015:60b] Final { 
CurrentTimestamp = "23-09-201409:58:39+05:30"; 
Message = RegisteredSuccessfully; 
Status = 0; 
Token = "281fecff-2d44-4530-bc24-03558f1ebda1"; 
ValidUntilTimespan = "23-09-201409:58:39+05:30"; 
} 

하지만 난이 처럼 연결된 방법 "RegisteredSuccessfully"의 문자열 반응을 얻고있다하지만 난처럼 문자열을 받고 있기 때문에이 문자열 표시와 경고를 가져 원 이 경고에 "등록 성공"처럼 표시 할 수 없습니다. 내가 파싱 한 올바른 길인가 아니면 거기에있는 길 Deserilization의 다른 길? 미리 감사드립니다.

답변

0

나는 인해 공간이 그래서 난 그냥 위 라인을 코멘트와 다시 실행하여 연결된하기되었으며,이 라인에 선

responseData = [responseData stringByReplacingOccurrencesOfString:@" " withString:@""]; 

으로 디버깅 선 후 문제를 파악했다. 나는 이것이 사소한 문제 였지만 도움이 될지도 모르겠다. 그래서 누군가 내 자신의 질문에 대답했다.