¿Cuál es la forma más eficiente de convertir una respuesta JSON de 10 MB en un NSDictionary?

Nuestra aplicación debe mostrar una gran cantidad de datos con un mínimo de solicitudes HTTP remotas, por lo que hemos agregado un punto final a nuestro backend que proporciona todos los datos necesarios como una única respuesta json. Esto da como resultado ~ 1.5 MB (comprimido) o aproximadamente 8 MB de texto sin formato con formato json.

No es un gran problema, se descarga en 10-30 segundos y estamos usando ASIHTTPRequest para escribir toda la respuesta en el disco.

Ahora viene la parte divertida: después de leer el archivo sin comprimir en una cadena asignada a la memoria, usamos stig'sjson-framework para convertirlo en un NSDictionary. Esto ha funcionado muy bien para el resto de nuestra aplicación y la respuesta típica de 2 KB json para el resto de nuestros puntos finales API. Sin embargo, la deserialización de estos 8 MB de datos lleva de un par de segundos (simulador) a minutos (iPod Touch 3G y 2da generación).

Estoy investigando el mejor enfoque para leer todos estos datos.

Me encantaría usar listas binarias servidas directamente desde el back-end, pero estamos usando Java y no he encontrado una biblioteca adecuada que cumpla con nuestros requisitos, y con un plazo tan ajustado, escribir la nuestra podría no ser la mejor idea.

Si ayuda de alguna manera, la cadena json que estamos analizando es principalmente una matriz de elementos X, así:

{
    "items": [ { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" }
             ]
}

¿Cuál es el método más eficiente para leer en esta cadena formateada json de 8 MB en un NSDictionary en memoria?

Respuestas a la pregunta(2)

Su respuesta a la pregunta