У меня есть следующий код, который пытается проанализировать JSON, который я возвращаю с веб-сайта:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"my ns string = %@", responseString);
[responseData release];
NSError *error;
NSDictionary *dictionary = [parser objectWithString:responseString
error:&error];
while (error) {
NSLog(@"%@", error);
error = [[error userInfo] objectForKey:NSUnderlyingErrorKey];
}
NSLog(@"%@", dictionary);
}
Я получаю эти ошибки:
2011-08-01 20:16:47.273 myJSONParser[1040:b603] Connection didReceiveResponse:
<NSHTTPURLResponse: 0x4e810f0> - application/json
2011-08-01 20:16:47.279 myJSONParser[1040:b603] Connection didReceiveData of length: 117
2011-08-01 20:16:47.359 myJSONParser[1040:b603] my ns string =
2011-08-01 20:16:47.361 myJSONParser[1040:b603] Error Domain=org.brautaset.SBJsonParser.ErrorDomain Code=0 "Unexpected end of input" UserInfo=0x4eada30 {NSLocalizedDescription=Unexpected end of input}
2011-08-01 20:16:47.363 myJSONParser[1040:b603] (null)
У меня есть контрольповерх JSON, который я пытаюсь получить, и внутри PHP, который генерирует JSON, я устанавливаю заголовок следующим образом:
header("Content-Type:application/json");
...
echo json_encode($arr);
«Неожиданный конец ввода» приводит меня к мысли, что JSON каким-то образом искажен,но JSONLint говорит мне, что это совершенно правильно.Что я делаю неправильно?Спасибо, что нашли время, чтобы прочитать это, любой совет будет очень признателен!
ОБНОВЛЕНИЕ:
Я установил responseData следующим образом:
NSMutableData *responseData;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"Connection didReceiveData of length: %u", data.length);
[responseData appendData:data];
}
Ипарсер вот так (в .ч):
SBJsonParser *parser;
и .m:
parser = [[SBJsonParser alloc] init];
Чарльз Выводы:
HTTP/1.1 200 OK
Date: Tue, 02 Aug 2011 03:30:14 GMT
Server: Apache
X-Powered-By: PHP/5.2.15
Transfer-Encoding: chunked
Content-Type: application/json
[{"key1":"Name","key2":"First","key3":"2011-08-13"},{"key1":"Second","key2":"test2","key3":"2011-08-13"}]
Описание полученных NSData:
Печать описания данных: {длина = 117, емкость = 256, байт = 0x5b7b22686f6d65223a22426c61636b62 ... 30382d3133227d5d}