В настоящее время я пытаюсь передать данные из Twitter с помощью их потоковых API. Я приложил код ниже для создания моего NSData
и добавления к нему по адресу didReceiveData
. По какой-то причине каждый раз, когда didReceiveData
получает ответ от Twitter, он добавляется в качестве нового корня JSON в NSData
, поэтому, когда я пытаюсь разобрать NSData
в структуру JSON, он взрывается.Objective-C NSURLConnection didReceiveData, создающий плохой JSON в NSData
Я не мог понять, что происходит, и отправил JSON в валидатор, и он отметил, что в JSON есть несколько корней. Как я могу изменить код, чтобы продолжить добавление к существующему корню JSON? Или есть более простой способ сделать десериализацию в JSON, когда в файле NSData
есть несколько записей JSON?
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
// A response has been received, this is where we initialize the instance var you created
// so that we can append data to it in the didReceiveData method
// Furthermore, this method is called each time there is a redirect so reinitializing it
// also serves to clear it
NSLog(@"Did receive response");
_responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Append the new data to the instance variable you declared
NSLog(@"Did Receive data");
[_responseData appendData:data];
}
Сравните аналогичную проблему с http://stackoverflow.com/questions/18362889/error-deserializing-json-stream (и следующим обсуждением). Кажется, что NSJSONSerialization не может десериализовать один объект JSON из потока нескольких объектов JSON. –
У вас есть несколько NSURLConnection, указывающих на один и тот же делегат? Возможно, вы загрузили более одного ответа. –
@JamesRichard - это поток, который оставляет соединение открытым и получает структуры JSON с течением времени, которые добавляются в NSData ... вот в чем проблема. Я могу «найти способ» объединить все полученные json-структуры в один ». – Thomas