0
我正在嘗試連接到網頁並返回一個JSON字符串。這個字符串只需要在JSON中解析並返回到我已經等待的NSArray中。問題是JSON並不總是返回結果。有時候,它運作良好。有時,它返回(null),引用下面的錯誤。Objective-C的JSON返回錯誤「令牌[r]的非法啓動」
self.accounts = nil; // Clear the NSArray
NSString *post = [NSString stringWithFormat:@"username=%@", username.text];
NSData *postData = [NSData dataWithBytes: [post UTF8String] length: [post length]];
// Submit login data
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString: @"http://###.#####.###/app/getaccts.php"]];
[request setHTTPMethod: @"POST"];
[request setValue: @"application/x-www-form-urlencoded" forHTTPHeaderField: @"Content-Type"];
[request setHTTPBody: postData];
// Retreive server response
NSURLResponse *response;
NSError *err;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
accounts = [[content JSONValue] allValues]; // Parse JSON string into the array
NSLog(@"Array: %@", accounts);
我提交返回此頁:
{"1":"856069060", "2":"856056407"}
JSON記錄以下錯誤:
-JSONValue failed. Error is: Illegal start of token [r]
好吧,我說什麼你問及returnData返回此: <7b223122 3a223835 36303639 30363022 2c202232 223a2238 35363035 36343037 227D> JSON沒有觸發同樣的錯誤這一次。它表現異常不一致。 – Tanoro
我一分鐘前再試一次,並且returnData返回了您在我上次評論中看到的內容,現在JSON返回「非法開始標記[s]」。我無法弄清楚爲什麼JSON接收數據,但不會解析它。 – Tanoro
很酷,是的,問題是 - [NSString stringWithUTF8String:]需要一個真正的UTF8字符串,你的並不是因爲它不是NULL終止的(因爲returnData沒有用00結束)。確保你添加一個NULL字符到你的字符串的末尾,你應該沒問題。 – pho0