2011-08-10 6 views
0

JSON 결과를 반환하는 webservice (.NET)가 있습니다. iOS 응용 프로그램은 해당 웹 서비스를 사용하고 응답을받습니다. 모든 것이 작동하지만 응답을 받으면 객체 내부에 있습니다. d. 여기 응답은 다음과 같습니다 이제iOS 앱 소비 키 값 가져 오기 JSON

{"d":"{\"Name\":\"azamsharp\"}"} 

, 당신은 내가 "azamsharp"해당 부동산 "이름"의 값에 액세스 할 필요가 상상할 수있다. 나는 다음과 같은 접근 방식 제안 다른 후 다음 :

NSLog(@"%@",[responseDict valueForKeyPath:@"d.Name"]); 

을하지만이 나에게 다음과 같은 오류 준 :

reason: '[<NSCFString 0x4cd6270> valueForUndefinedKey:]: this class is not key value coding-compliant for the key Name.' 

가이 문제에 어떤 도움이 많이 감사를!

답변

3

JSON 개체에 "name"속성이 없습니다. JSON 객체에는 값이 문자열 인 단일 키 "d"가 있습니다.이 문자열은 다른 JSON 객체의 문자열 표현입니다.

당신은 이런 식으로 뭔가를해야 할 것 :

NSString *innerString = [responseDict valueForKey:@"d"]; 
NSDictionary *innerObject = [innerString parseJSON]; // Or however you parse a JSON string 
NSString *name = [innerObject valueForKey:@"Name"]; 
+0

고마워요! 그게 문제를 해결 했어! – azamsharp

+0

한 가지 추가 정보 :이 "d"는 .NET JSON 클래스의 기본 클래스입니다. 그것은 .NET에서 "d"를 사용하여 javascript에서 파싱해야 할 때 어떤 종류의 주입을 방지하기 때문입니다 (어떤 종류의 주입인지 묻지 마십시오). 그래서, 네, 항상 두 번 파싱해야합니다. –

2

또 다른 aproach은 다음과 같습니다 당신은 단지 하나의 선을 필요

NSString *innerString = [[responseDict valueForKey:@"d"] [email protected]"Name"]; 

.