Analizando la secuencia continua de JSON en iOS

Estoy luchando para get una versión de JSON para una aplicación que estoy escribiendo. En el lado de la aplicación tengo un NSInputStream que está conectado a un server con CFStreamCreatePairWithSocketToHost.

El server está generando objects JSON de forma asíncrona para la aplicación.

En la aplicación, reacciono a los datos de la networking en el evento NSStreamEventHasBytesAvailable. En algunas networkinges experimento que recibo varios objects JSON en el búfer de networking. Pero también quiero ocuparme del escenario donde no recibo todo el object JSON en un búfer de networking.

He estado buscando un analizador JSON que se encargue de estos escenarios para mí, pero no he podido encontrar uno. NSJSONSerialization no satisface bien con varios objects JSON en el NSData que debe pasar. No puedo comprender cómo hacer que NSJSONSerialization funcione en una transmisión y estoy seguro de que resolverá mi problema.

He buscado en YAJL, pero solo puedo hacer que funcione más de una vez. No puedo encontrar ningún buen ejemplo para el escenario que tengo.

Estoy frustrado y confundido ¿cuál es el mejor enfoque y dónde encuentro un buen ejemplo? ¡Cualquier sugerencia es bienvenida!

Hay una biblioteca llamada SBJson

Aquí hay un ejemplo ( de aquí ):

- (IBAction)go { id block = ^(id item, BOOL *stop) { dispatch_async(dispatch_get_main_queue(), ^{ // do something with item }); }; id eh = ^(NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ // handle error }); }; self.parser = [SBJson4Parser unwrapRootArrayParserWithBlock:block errorHandler:errorHandler]; NSURLSessionConfiguration *c = [NSURLSessionConfiguration defaultSessionConfiguration] NSURLSession *urlSession = [NSURLSession sessionWithConfiguration:c delegate:self delegateQueue:nil]; NSURL *url = [NSURL URLWithString:self.urlField.text]; NSURLSessionDataTask *urlSessionDataTask = [urlSession dataTaskWithURL:url]; [urlSessionDataTask resume]; } - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { switch ([self.parser parse:data]) { case SBJson4ParserError: self.parser = nil; break; case SBJson4ParserComplete: case SBJson4ParserStopped: self.parser = nil; break; case SBJson4ParserWaitingForData: break; } }