2013-11-28 3 views
0

그래서 나는 다음이오류 : JSON에 잘못된 최상위 타입이 쓰기

NSData *postData = [NSJSONSerialization dataWithJSONObject:postDataObject 
                  options:0 // Pass 0 if you don't care about the readability of the generated string 
                  error: &error]; 

할이와

- (NSDictionary *) createPostData{ 
    NSMutableDictionary * requestDictionary = [[NSMutableDictionary alloc]init]; 
    [requestDictionary setValue:@"type://someStuff" forKey: @"$type"]; 
    [requestDictionary setValue:@"account" forKey:@"Widget"]; 
    NSMutableDictionary* messageDictionary = [[NSMutableDictionary alloc] init]; 
    [messageDictionary setValue:@"type://someStuff" forKey:@"$type"]; 
    [messageDictionary setValue: self.password forKey:@"Password"]; 
    [messageDictionary setValue:false forKey:@"RememberMe"]; 
    [requestDictionary setValue:messageDictionary forKey:@"Message"]; 
    return requestDictionary; 
} 

을 dictionary- 반환과 같은 사전을 생성하는 기능을 가지고 그리고이 오류가 발생합니다 -

Error - *** +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write 

내가 왜 내가 규칙을 구독하고 있다고 생각하기 때문에 나는 정말로 볼 수 없습니다. documentation - 모든 키는 문자열이며 NSDictionary 및 NSString 인스턴스 만 사용합니다.

무슨 일 이니?

+1

당신은 postDataObject'이 제대로 게시 메소드의 반환 값을 할당'확실한가요? 당신은 콘솔에서 그것을 검사하고 여기에 결과를 게시 할 수 있습니까? –

+0

사전을 dataWithJSONObject에 NSLog 로그인하십시오. setValue : false는 내부 사전의 조기 종료를 유발합니다. 'setValue : @ (false)' –

+0

'[messageDictionary setValue : false forKey : @ "RememberMe"];''@ "RememberMe"''messageDictionary'의 키 객체를 제거합니다. 실제로 값을 설정하려면'@ NO '를 사용하십시오. – Sebastian

답변

2

코드의 당신의 블록을 설정

 if ([NSJSONSerialization isValidJSONObject:postDataObject]) { NSData *postData = [NSJSONSerialization dataWithJSONObject:postDataObject 
                 options:0 // Pass 0 if you don't care about the readability of the generated string 
                 error: &error];} 

대신

 NSData *postData = [NSJSONSerialization dataWithJSONObject:postDataObject 
                 options:0 // Pass 0 if you don't care about the readability of the generated string 
                 error: &error]; 
관련 문제