2011-08-07 49 views
0

試圖執行的小功能使用JSON我得到的下一條消息得到一個數組時:Objective-C:JSON無法識別的主角?

-JSONValue failed. Error trace is: ( "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\" UserInfo=0x5d50e30 {NSLocalizedDescription=Unrecognised leading character}"

這是代碼

NSString * payloadAsString = [[NSString alloc] initWithData:receivedData 
           encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",payloadAsString); 
NSMutableArray *jsonArray = [[NSMutableArray alloc] initWithArray: 
           [payloadAsString JSONValue]]; 
self.loginArray = jsonArray; 

的NSLog打印[["True","1","MTY"]](據我所知應該管用)。

有什麼想法?

回答

3

我不知道哪個版本JSON的框架您使用的,但我修改了代碼打印字符違規:

在SBJSONParser.m:

- (BOOL)scanValue:(NSObject **)o 
{ 
... 
default: 
[self addErrorWithCode:EPARSE description:[NSString stringWithFormat:@"Unrecognised leading character (%x)", c[-1]]]; 
//[self addErrorWithCode:EPARSE description: @"Unrecognised leading character"]; 
return NO; 
} 

您可以嘗試在該行的代碼中設置斷點來代替。

另外,一般來說,您可以嘗試將JSON粘貼到JSONLint http://jsonlint.com/以查看它是否有效。不過,你的JSON確實可以驗證,所以你的問題在別處。

1

確保您的字符串值正在使用有效的雙引號字符。我見過人們嘗試複製粘貼JSON出編輯的只是讓他們的報價變成像這些開報價接近引號對:

「」

+0

檢查,是不是 –

0

我剛剛遇到了這個問題,結果證明Web服務使用的目錄權限已被更改。