2013-06-06 1 views
1

JSON을 구문 분석하는 다음 코드에서 객체가 NSArray 또는 NSDictionary 이외의 경우 NSJSONReadingAllowFragments가 사용됩니다.NSJSONSerialization NSJSONReadingAllowFragments 읽기

아래의 코드는 제대로 작동하고 32를 인쇄합니다. 그러나 abcd로 32를 바꾸면 null로 출력됩니다. 문자열 abcd에 대한 null 이유는 알 수 있습니다. 모든 문자열을 인용해야하기 때문에

NSString *[email protected]"32"; 
NSError *error; 
NSData *createdData = [num dataUsingEncoding:NSUTF8StringEncoding]; 
id response=[NSJSONSerialization JSONObjectWithData:createdData options:NSJSONReadingAllowFragments error:&error]; 
NSLog(@"Response= %@",response); 
+3

비 (또한, 객체가 반환되는 마음에 곰, 정말 NSDictionary하지 그래서 id로 선언은 더 의미) : 방법이 실패하고 이유를 모르는, 그 방법 경우 * 오류 매개 변수가 있습니다 * - 문제에 대한 정보를 얻기 위해 해당 매개 변수를 사용하지 않는 이유는 무엇입니까? –

+0

고마워, 마틴. – weber67

답변

3
32가 유효한 JSON 조각 (숫자)이기 때문이다

하지만 abcd 유효한 JSON 조각이 아니다. 시도 : "abcd" 대신 abcd 생산

NSString *[email protected]"\"abcd\""; 

합니다.

+1

좋은 대답이었습니다. 3 분을 기다렸다가 답을 확인할 수 있습니다. – weber67

+0

변수를 선언하는 방법은 중요하지 않으므로 사전을 예상하면 'NSDictionary * responseDictionary'는 정상입니다. 그러나 isKindOfClass :를 사용하여이를 검증하는 것은 의미가 있습니다. –

+0

네, 저도 추가 할 것입니다. 내가 얻을 응답은 NSDictionary이지만 체크를 추가하면 NSDictionary 이외의 것으로 나오게되는 방법이 있다면 예외가 발생하지 않습니다 – weber67